我正在使用gcc
(Ubuntu 4.4.1-4ubuntu9)编译我的程序,但是每当它在我的代码中看到//注释时就会出现错误信息:
interface.c :##: error: expected expression before â/â token<
我使用的 gcc
编译模式是否禁止 //
注释?
$ gcc -g -ansi -pedantic interface.c structs.h -c -I. -I/home/me/project/h
为什么?我正在使用gcc
(Ubuntu 4.4.1-4ubuntu9)编译我的程序,但是每当它在我的代码中看到//注释时就会出现错误信息:
interface.c :##: error: expected expression before â/â token<
我使用的 gcc
编译模式是否禁止 //
注释?
$ gcc -g -ansi -pedantic interface.c structs.h -c -I. -I/home/me/project/h
为什么?//
注释在旧版(pre 99)的C语言中不允许使用,应该使用/**/
(或者移除-ansi
,它是C89标准的同义词)。
-ansi
选项的情况下,gcc支持带有GNU特定扩展的C89语法,其中一个扩展恰好是双斜杠 //
注释。加上-std=c99
选项后,gcc会尝试遵循1999年ISO C标准,该标准要求支持双斜杠 //
注释。 - Keith Thompson请参阅GNU编译器文档中的C++注释。
在GNU C中,您可以使用C ++风格的注释,以
//
开头,直到行尾。许多其他C实现允许这样的注释,并且它们包含在1999 C标准中。但是,如果您指定了一个指定C99
之前的ISO C版本或-ansi
(等同于-std=c89
)的-std
选项,则不会识别C ++风格的注释。
(强调是我的,因为一些帖子声称//
不允许在标准C中,而这仅适用于99年之前的标准)。