默认情况下,如何在GCC 4.3.3中处理C ++风格的注释?

时间:2009-11-01 16:48:49

标签: c++ c gcc comments gcc4

我在Ubuntu 9.04 64位上使用GCC 4.3.3,并且在C代码中使用C ++风格的注释会出错。当我在标题中说“默认”时,我的意思是简单地调用gcc test.c

根据GCC 4.3.3文档(here),这是支持的......但我仍然得到了错误。

这些错误消失了,我的编译字符串添加了一个简单的-std = c99,所以我的问题就解决了。很奇怪,如果有任何海湾合作委员会专家对此有解释,因为在我看来,这与文件明显矛盾。

#include <stdio.h>
// this is a comment

int main( void )
{
   return 0;
}

3 个答案:

答案 0 :(得分:5)

Ubuntu可能会覆盖默认值which should be gnu89。当然,我不能用我的GCC 4.3副本(在Debian上)得到它。

% echo '// foo' | gcc-4.3 -x c -c -
% echo '// foo' | gcc-4.3 -std=gnu89 -x c -c -    
% echo '// foo' | gcc-4.3 -std=c89 -x c -c -    
<stdin>:1: error: expected identifier or '(' before '/' token

答案 1 :(得分:4)

来自 http://gcc.gnu.org/onlinedocs/gcc/Standards.html#Standards

  

默认情况下,如果没有C语言方言   给出了选项,是-std = gnu89

// comments

识别-std=gnu89

答案 2 :(得分:3)

通过defualt GCC使用带有GCC扩展的C89 / 90标准。严格来说,默认情况下它并不遵守任何特定标准,因为默认情况下,在标准要求此类消息的情况下,它不会发出任何诊断消息。您需要在-ansi -pedantic模式下运行gcc(可能还有-Wall)才能使其符合标准。在这种情况下,你将再次拥有C89 / 90。