我正在研究Linux机器。 是否有任何系统命令可以找到我正在使用的C编译器后面的标准?
这是依赖于编译器的,我假设你正在使用GCC。 您可以使用以下命令检查编译器定义的宏:
gcc -dM -E - < /dev/null
检查有关标志的手册 ,特别是:
__STDC_VERSION__
此宏扩展为C标准版本号,yyyymmLforms的长整型常量,其中yyyy和mm是标准版本的年份和月份。 这表示编译器符合哪个版本的C标准。 与STDC一样,除非GNU CPP与GCC一起使用,否则这对于整个实现来说不一定准确。
价值199409L表示1994年修订的1989 C标准,这是目前的默认标准; 值199901L表示1999年C标准的修订版。 对1999年修订的支持尚未完成。
如果使用-traditional-cpp选项,则未定义此宏,也不会在编译C ++或Objective-C时定义此宏。
在这个网站上,你可以找到很多关于此的信息。 请参阅此处的表格。
您也可以使用标准宏在代码中对此进行测试,例如(最初来自同名的sourceforge项目):
#if defined(__STDC__) # define PREDEF_STANDARD_C_1989 # if defined(__STDC_VERSION__) # define PREDEF_STANDARD_C_1990 # if (__STDC_VERSION__ >= 199409L) # define PREDEF_STANDARD_C_1994 # endif # if (__STDC_VERSION__ >= 199901L) # define PREDEF_STANDARD_C_1999 # endif # if (__STDC_VERSION__ >= 201710L) # define PREDEF_STANDARD_C_2018 # endif # endif #endif
如果要从命令行检查这个,可以选择一个(例如c89)并检查最小程序的返回值:
echo -e "#ifdef __STDC__n#errorn#endif"|gcc -xc -c - > /dev/null 2>&1; test $? -eq 0 || echo "c89
在编译时,检查预处理器宏:
你可能有gcc,在这种情况下你可以在编译时指定标准,例如
$ gcc -Wall -std=c89 foo.c -o foo
要么:
$ gcc -Wall -std=c99 foo.c -o foo
类型:
$ man gcc
了解详情。
如果您的C编译器是gcc,则可以使用-std
选项指定要遵循的C标准。 默认值为gnu89。 没有通用的系统命令来确定任何给定编译器的标准。 您需要查看文档。
除了以上答案。 如果您想检查您是否使用C99。 只需定义一个结构并将其初始化为:
struct Tree{ struct Node *root; struct Node NIL_t; struct Node * const NIL; } struct Tree t = { .root = NULL, .NIL = &t.NIL_t }; //init.
这仅适用于C99。 如果它没有,那么你没有使用C99。
需要了解更多c/c++开发分享如何找到我当前的编译器标准,如果它是C90等,也可以关注C/ C++技术分享栏目---计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享如何找到我当前的编译器标准,如果它是C90等相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/980171.html