我使用man gcc: search -std=得到下面的关于gcc中语言标准的使用情况的描述。
$ gcc -v
Reading specs from /home/y/usr/bin/../lib/gcc/x86_64-redhat-linux/3.4.6/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-java-awt=gtk --host=x86_64-redhat-linux
Thread model: posix
gcc version 3.4.6 20060404 (Red Hat 3.4.6-3)
=============================================================={{
-std=
此选项目前只支持C或C++编译时的语言标准选择。本选项必须要给定一个值,可能是如下所列其一。
c89
iso9899:1990
ISO C90 (与-ansi相同)
iso9899:199409
ISO C90 修正案1
c99
c9x
iso9899:1999
iso9899:199x
ISO C99 注意:本标准还没有被完全支持,了解更多信息请查看:。
选项c9x和iso9899:199x已经废弃
gnu89
默认选项,ISO 90和GNU扩展(包含一些C99的特性)
gnu99
gnu9x
ISO C99和GNU扩展。当ISO C99在gcc中完全实现后,它变成默认的选项。选项gnu9x已经废弃
c++98
修正以后的1998年的ISO C++标准
gnu++98
编译C++代码时的默认选项。等同于c++98选项加上GNU扩展
甚至当次选项没有明确指定时,你照样可以使用一些新标准里面的特性,只要这些特性和以前的标准没有冲突就行。
例如,就算没有指定-std=c99,你任然可以使用“__restrict__”。
当使用-std选项使用特定的ISO C标准时,除非在ISO C90标准里面没有,否则和使用-ansi选项是同样的效果,
例如,在inline关键字中使用“//”注释。
==============================================================}}
阅读(1211) | 评论(0) | 转发(0) |