为什么我不能在我的C代码中使用//样式的注释?

rlb*_*usa 33 c

我正在使用gcc(Ubuntu 4.4.1-4ubuntu9)来编译我正在编写的程序,但只要它在我的代码中看到//注释就会呕吐,说:

interface.c :##: error: expected expression before â/â token<
Run Code Online (Sandbox Code Playgroud)

gcc我使用的编译模式是否禁止//评论?

$ gcc -g -ansi -pedantic interface.c structs.h -c -I. -I/home/me/project/h
Run Code Online (Sandbox Code Playgroud)

为什么?

for*_*ran 73

//在旧(99之前)C版本中不允许使用注释,使用/**/(或删除-ansi,这是C89标准的同义词)

  • 没有`-ansi`,gcc目前支持具有GNU特定扩展的C89; 其中一个扩展恰好是`//`注释.使用`-std = c99`,它会尝试符合1999 ISO C标准,该标准需要支持`//`注释. (3认同)

Sin*_*nür 24

请参阅GNU编译器文档中的C++注释.

在GNU C中,您可以使用C++样式注释,这些注释从行开始//并一直持续到行结束.许多其他C实现允许这样的注释,它们包含在1999 C标准中.但是,如果指定了-std之前C99-ansi(等效于-std=c89)指定ISO C版本的选项,则无法识别C++样式注释.

(重点是我的,因为有些帖子声称//标准C中不允许这样做,而这仅适用于99之前的标准).

  • 对于我们中的一些人来说,"标准C"在99年之前很早就被标准化了.总是明智地指定标准的哪个版本!:-) (5认同)
  • @Brian:所以...我们需要的是标准...标准。 (2认同)
  • 大多数不必担心跨平台问题的用户可能会更喜欢 `-std=gnu99` (2认同)