行尾(GNU文档)

Gau*_*aut 6 c gcc

我正在阅读有关gcc预处理的文档,我读了下面的句子(这里):

如果任何输入文件的最后一行缺少行尾标记,则认为文件末尾隐式提供一个.C标准表示这种情况会引发未定义的行为,因此GCC会发出警告信息.

我尝试通过以下方式产生警告:

> echo -n "int main(void) {return 0;}" > test.c
> gcc -Wall -Wextra -Werror test.c
Run Code Online (Sandbox Code Playgroud)

但没有概率,它编译.我将行尾标记理解为新行字符,但它似乎是其他任何东西.

我怎么能发出警告?

nnn*_*nnn 5

它似乎从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.
Run Code Online (Sandbox Code Playgroud)

  • 最初警告将是可选的.最终的补丁无条件地删除它.由于行为未定义,我希望有一个选项来启用警告. (2认同)