是否有命令告诉编译器打印其版本?

时间:2015-03-13 11:43:49

标签: c syntax compilation

我需要将我的作业上传到在线编译器,我被告知它是GCC,但我在网上编译器上遇到了段错误,但在用VS或Linux的GCC编译时没有。

有没有办法让编译器打印出它的编译器及其版本?

1 个答案:

答案 0 :(得分:2)

通常没有一个命令。

您可以尝试检查编译器定义的宏。

cmake这样做,它有大量的检查来检测编译器版本。

它编译代码并打印"供应商字符串"基于预处理器符号。

这里是gcc代码:https://github.com/Kitware/CMake/blob/master/Modules/Compiler/GNU-DetermineCompiler.cmake

因为clang代替gcc,你可能还想检查这里使用的宏:

https://github.com/Kitware/CMake/blob/master/Modules/Compiler/Clang-C-FeatureTests.cmake

修改

因此,正在运行的C示例将执行以下操作:

#include <stdio.h>

int main(int argc, char **argv) {
#ifdef __clang_major__
    printf ("clang detected version %d.%d\n", __clang_major__, __clang_minor__);
#endif

#ifdef __GNUC__
    // note that clang 3.7 declares itself as a gcc 4.2"
    printf ("gcc detected version %d.%d\n", __GNUC__, __GNUC_MINOR__);
#endif
}

clang的输出

$ clang main.cc
$ ./a.out 
clang detected version 3.7
gcc detected version 4.2

输出gcc

$ gcc main.cc
$ ./a.out 
gcc detected version 4.8