为什么GCC C89/C90 ANSI C在Eclipse中使用__STDC_VERSION__?

3

我需要确认一下我的代码是否使用的是ANSI C(C89/C90),我注意到了这个问题:

enter image description here

即使我在Eclipse CDT中选择了ASNI C(C89/C90)标准。

enter image description here

问题:

有人说 ANSI C 不使用 __STDC_VERSION__,但是为什么我在 Eclipse CDT 中看到与 C99 标准的 199901L 相同的值呢?

我正在使用 Lubuntu Linux 的 GCC 编译器。


这个宏展开为C标准的版本号,是一个长整数常量,形式为yyyymmL,其中yyyy和mm分别表示标准版本的年份和月份。这表示编译器符合哪个版本的C标准。与__STDC__类似,除非使用GCC的GNU CPP,否则这并不一定适用于整个实现。值199409L表示1989年C标准在1994年修订的版本,这是当前的默认版本;值199901L表示1999年C标准的修订版。 - 0___________
@0___________是什么意思?为什么我选择了C89版本,STDC版本会显示199901L? - euraad
1
@JonathanLeffler 我知道,但我并未使用C99标准,正如你所见,我使用的是C89/C90标准。 - euraad
@JonathanLeffler 这可能是Eclipse CDT中的一个bug吗? - euraad
是的,这可能是Eclipse CDT中的一个bug(特性?)。 - Jonathan Leffler
显示剩余3条评论
1个回答

2
我已经测试过了。Eclipse CDT只显示最早设定的值,与编译器实际看到的__STDC_VALUE__没有任何关联。
当您以C90编译时,__STDC_VALUE__未定义,Eclipse中显示的值无效。我相信这是Eclipse的一个错误。
颜色也是错误的。

enter image description here


是的!这是Eclipse中的一个bug!代码是正常工作的。但GUI是误导性的。谢谢你的回答。 - euraad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接