看看这段代码:
#include <stdio.h>
#define _ONE "one"
#define _TWO_AND ", two and "
int main()
{
const char THREE[6] = "three" ;
printf(_ONE _TWO_AND "%s.\n", THREE );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这printf是有效的:
printf("one" ", two and " "%s.\n", "three" );
Run Code Online (Sandbox Code Playgroud)
输出是:
一,二,三.
gcc编译此代码后既没有错误也没有警告消息.gcc编译器是否应该以这种方式工作,还是一个bug?