我需要将我的作业上传到在线编译器,我被告知它是GCC,但我在网上编译器上遇到了段错误,但在用VS或Linux的GCC编译时没有。
有没有办法让编译器打印出它的编译器及其版本?
答案 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