c/c++语言开发共享如何找到我当前的编译器标准,如果它是C90等

我正在研究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

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐