shi*_*zou 1 c syntax compilation
我需要将我的作业上传到在线编译器,有人告诉我这是 GCC,但我在在线编译器上遇到了段错误,但在使用 VS 或 Linux 的 GCC 上编译时却没有。
有没有办法让编译器打印它是什么编译器及其版本?
通常没有一个命令。
您可以尝试检查编译器定义的宏。
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
}
Run Code Online (Sandbox Code Playgroud)
clang 的输出:
$ clang main.cc
$ ./a.out
clang detected version 3.7
gcc detected version 4.2
Run Code Online (Sandbox Code Playgroud)
海湾合作委员会的输出:
$ gcc main.cc
$ ./a.out
gcc detected version 4.8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2650 次 |
| 最近记录: |