编译以下代码段时,gcc和clang都只发出警告.注意\下一个后面的空格int:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int \
a = 10;
printf("%d\n", a);
}
Run Code Online (Sandbox Code Playgroud)
GCC:
main.c:7:6:警告:反斜杠和换行符以空格分隔[默认启用]
铛:
main.c:7:7:警告:反斜杠和换行符以空格分隔int ^
在5.1.1.2的c99标准中,它说:
删除反斜杠字符()后面紧跟一个新行字符的每个实例,拼接物理源代码行以形成逻辑源代码行.
为什么C编译器不符合C标准?我认为只有他们的创作者决定不这样做.我在gcc邮件列表上发现了一条消息,我认为这引起了这种行为:http://gcc.gnu.org/ml/gcc-patches/2000-09/msg00430.html.在那里,他们说这是完成的,因为尾随空格是常见的,他们不想将它们视为错误.这有多常见?