Нет ли синтаксической ошибки? Следует printf («один», «два» и «% s. \ N», «три»); быть действительным кодом?
Посмотрите на этот код:
#include
#define _ONE "one"
#define _TWO_AND ", two and "
int main()
{
const char THREE[6] = "three" ;
printf(_ONE _TWO_AND "%s.\n", THREE );
return 0;
}
printf
эффективно:
printf("one" ", two and " "%s.\n", "three" );
и вывод:
один, два и три.
gcc
не дает ни сообщений об ошибках, ни предупреждений после компиляции этого кода. Этоgcc
компилятор должен работать таким образом, или это ошибка?