解决这个问题,只要linux下程序结尾必须以换行符结束就可以了。
这么规定的初衷有两个:
为了每一行都要以换行结束。
因为行尾的/表示连接下一行,如果一个文件最后一行(main函数的右边大括号)行尾有/,那么,紧跟它也被包含进来的下一个源文件的第一行就会被连接!而如果一个文件以一个空行结束就会避免这种情况的发生。
例子:
- int main()
- {
- printf("%d", /
- sizeof(int));
- return 0;
- }
上例中的第四个物理行和第五个物理行被反斜杠(/)连接成一个逻辑行(等价于printf("%d", sizeof(int)));
如果在第七行main函数的右大括号后面加上反斜杠的话,那么它就会和下一个文件的第一行连接,所以这里}之后要输入一个换行符,故要求每一行都要用换行结束。
注:有些编译器会自动在文件结束位置插入换行符。(譬如vi编辑器)
本文解释了为什么Linux下的程序文件必须以换行符结束的原因。主要涉及到两个方面:一是确保每一行都以换行符结束;二是避免行尾的连接符导致逻辑错误。文章还提供了一个具体的示例来说明这一点,并指出了一些编译器会自动在文件末尾插入换行符。
7987

被折叠的 条评论
为什么被折叠?



