我正在阅读有关gcc预处理的文档,我读了下面的句子(这里):
如果任何输入文件的最后一行缺少行尾标记,则认为文件末尾隐式提供一个.C标准表示这种情况会引发未定义的行为,因此GCC会发出警告信息.
我尝试通过以下方式产生警告:
> echo -n "int main(void) {return 0;}" > test.c > gcc -Wall -Wextra -Werror test.c
但没有概率,它编译.我将行尾标记理解为新行字符,但它似乎是其他任何东西.
我怎么能发出警告?
它似乎从gcc中删除了.
请参阅:https: //gcc.gnu.org/bugzilla/show_bug.cgi?id = 14331#c19
2007-05-31
PR preprocessor/14331 * lex.c (_cpp_get_fresh_line): Don't warn if no newline at EOF.