Нет ли синтаксической ошибки? Следует 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 компилятор должен работать таким образом, или это ошибка?

Ответы на вопрос(3)

Ваш ответ на вопрос