天津网站建设方案,上海微网站建设方案,咸阳做网站公司电话,手机制作网页用什么软件实际工作中#xff0c;可能会遇到c的一些高级特性#xff0c;例如std::invoke#xff0c;此函数是c17才引入的#xff0c;如何判断当前的gcc是否支持c17呢#xff0c;这里提供两种办法。 1.根据gcc的版本号来推断 gcc --version#xff0c;可以查看版本号#xff0c;笔者…实际工作中可能会遇到c的一些高级特性例如std::invoke此函数是c17才引入的如何判断当前的gcc是否支持c17呢这里提供两种办法。 1.根据gcc的版本号来推断 gcc --version可以查看版本号笔者的电脑gcc的版本号是8.3.0然后查看8.3.0是什么时候发布的查出是2019年发布的从而推断出是支持但是不是十分肯定所以接着看第二种方法 2.直接man gcc
上图中红色方框-std表示支持的标准项可以看到c11,c17之类的
centos 本身自带的版本是不支持到C17的。截取 man gcc如下 -stdDetermine the language standard. This option is currently only supported when compiling C orC.The compiler can accept several base standards, such as c90 or c98, and GNU dialects of thosestandards, such as gnu90 or gnu98. When a base standard is specified, the compiler accepts allprograms following that standard plus those using GNU extensions that do not contradict it. Forexample, -stdc90 turns off certain features of GCC that are incompatible with ISO C90, such asthe asm and typeof keywords, but not other GNU extensions that do not have a meaning in ISOC90, such as omitting the middle term of a ?: expression. On the other hand, when a GNU dialectof a standard is specified, all features supported by the compiler are enabled, even when thosefeatures change the meaning of the base standard. As a result, some strict-conforming programsmay be rejected. The particular standard is used by -Wpedantic to identify which features areGNU extensions given that version of the standard. For example -stdgnu90 -Wpedantic warns aboutC style // comments, while -stdgnu99 -Wpedantic does not.A value for this option must be provided; possible values arec90c89iso9899:1990Support all ISO C90 programs (certain GNU extensions that conflict with ISO C90 aredisabled). Same as -ansi for C code.iso9899:199409ISO C90 as modified in amendment 1.c99c9xiso9899:1999iso9899:199xISO C99. Note that this standard is not yet fully supported; seehttp://gcc.gnu.org/c99status.html for more information. The names c9x and iso9899:199x aredeprecated.c11c1xiso9899:2011ISO C11, the 2011 revision of the ISO C standard. Support is incomplete and experimental.The name c1x is deprecated.gnu90gnu89GNU dialect of ISO C90 (including some C99 features). This is the default for C code.gnu99gnu9xGNU dialect of ISO C99. When ISO C99 is fully implemented in GCC, this will become thedefault. The name gnu9x is deprecated.gnu11gnu1xGNU dialect of ISO C11. Support is incomplete and experimental. The name gnu1x isdeprecated.c98c03The 1998 ISO C standard plus the 2003 technical corrigendum and some additional defectreports. Same as -ansi for C code.gnu98gnu03GNU dialect of -stdc98. This is the default for C code.c11c0xThe 2011 ISO C standard plus amendments. Support for C11 is still experimental, and maychange in incompatible ways in future releases. The name c0x is deprecated.gnu11gnu0xGNU dialect of -stdc11. Support for C11 is still experimental, and may change inincompatible ways in future releases. The name gnu0x is deprecated.c1yThe next revision of the ISO C standard, tentatively planned for 2017. Support is highlyexperimental, and will almost certainly change in incompatible ways in future releases.gnu1yGNU dialect of -stdc1y. Support is highly experimental, and will almost certainly changein incompatible ways in future releases.