Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 是否有命令告诉编译器打印其版本?_C_Syntax_Compilation - Fatal编程技术网

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

C 是否有命令告诉编译器打印其版本?,c,syntax,compilation,C,Syntax,Compilation,我需要上传我的作业到一个在线编译器,我被告知它是GCC,但我在在线编译器上得到了segfault,但在使用VS或linux的GCC编译时没有 有没有办法让编译器打印它是什么编译器及其版本?通常没有一个命令 您可以尝试检查编译器定义的宏 cmake可以做到这一点,它有一系列广泛的检查来检测编译器版本 它编译代码并根据预处理器符号打印“供应商字符串” 例如,下面是gcc的代码: 由于clang是gcc的替代品,您可能还需要检查此处使用的宏: 编辑: $ clang main.cc $ ./a.ou

我需要上传我的作业到一个在线编译器,我被告知它是GCC,但我在在线编译器上得到了segfault,但在使用VS或linux的GCC编译时没有


有没有办法让编译器打印它是什么编译器及其版本?

通常没有一个命令

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

cmake可以做到这一点,它有一系列广泛的检查来检测编译器版本

它编译代码并根据预处理器符号打印“供应商字符串”

例如,下面是gcc的代码:

由于clang是gcc的替代品,您可能还需要检查此处使用的宏:

编辑

$ clang main.cc
$ ./a.out 
clang detected version 3.7
gcc detected version 4.2
$ gcc main.cc
$ ./a.out 
gcc detected version 4.8
因此,运行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
}
gcc的输出:

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

通常没有一个命令

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

cmake可以做到这一点,它有一系列广泛的检查来检测编译器版本

它编译代码并根据预处理器符号打印“供应商字符串”

例如,下面是gcc的代码:

由于clang是gcc的替代品,您可能还需要检查此处使用的宏:

编辑

$ clang main.cc
$ ./a.out 
clang detected version 3.7
gcc detected version 4.2
$ gcc main.cc
$ ./a.out 
gcc detected version 4.8
因此,运行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
}
gcc的输出:

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

通常没有一个命令

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

cmake可以做到这一点,它有一系列广泛的检查来检测编译器版本

它编译代码并根据预处理器符号打印“供应商字符串”

例如,下面是gcc的代码:

由于clang是gcc的替代品,您可能还需要检查此处使用的宏:

编辑

$ clang main.cc
$ ./a.out 
clang detected version 3.7
gcc detected version 4.2
$ gcc main.cc
$ ./a.out 
gcc detected version 4.8
因此,运行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
}
gcc的输出:

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

通常没有一个命令

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

cmake可以做到这一点,它有一系列广泛的检查来检测编译器版本

它编译代码并根据预处理器符号打印“供应商字符串”

例如,下面是gcc的代码:

由于clang是gcc的替代品,您可能还需要检查此处使用的宏:

编辑

$ clang main.cc
$ ./a.out 
clang detected version 3.7
gcc detected version 4.2
$ gcc main.cc
$ ./a.out 
gcc detected version 4.8
因此,运行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
}
gcc的输出:

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


这是死亡的主要标志。我建议您先仔细检查代码。不要关注代码没有运行的原因,而是帮助他在本地框中复制代码。这将告诉您如何以编程方式获取版本,但您需要找出代码的错误。这不太可能是一个编译器错误,在这种情况下,版本号实际上并不正确matter@Alex你能详细说明一下吗?@SouravGhosh他说,在线编译器有缺陷。他的家庭信箱运行的代码很好。所以很明显,他想通过把代码写在盒子上来找出代码的错误。当你看到它在哪里出错时,最容易找出未定义的行为。这是错误的主要标志。我建议您先仔细检查代码。不要关注代码没有运行的原因,而是帮助他在本地框中复制代码。这将告诉您如何以编程方式获取版本,但您需要找出代码的错误。这不太可能是一个编译器错误,在这种情况下,版本号实际上并不正确matter@Alex你能详细说明一下吗?@SouravGhosh他说,在线编译器有缺陷。他的家庭信箱运行的代码很好。所以很明显,他想通过把代码写在盒子上来找出代码的错误。当你看到它在哪里出错时,最容易找出未定义的行为。这是错误的主要标志。我建议您先仔细检查代码。不要关注代码没有运行的原因,而是帮助他在本地框中复制代码。这将告诉您如何以编程方式获取版本,但您需要找出代码的错误。这不太可能是一个编译器错误,在这种情况下,版本号实际上并不正确matter@Alex你能详细说明一下吗?@SouravGhosh他说,在线编译器有缺陷。他的家庭信箱运行的代码很好。所以很明显,他想通过把代码写在盒子上来找出代码的错误。当你看到它在哪里出错时,最容易找出未定义的行为。这是错误的主要标志。我建议您先仔细检查代码。不要关注代码没有运行的原因,而是帮助他在本地框中复制代码。这将告诉您如何以编程方式获取版本,但您需要找出代码的错误。这不太可能是一个编译器错误,在这种情况下,版本号实际上并不正确matter@Alex你能详细说明一下吗?@SouravGhosh他说,在线编译器有缺陷。他的家庭信箱运行的代码很好。所以很明显,他想通过把代码写在盒子上来找出代码的错误。这是最容易找出未定义的行为,当你看到它在哪里出错时。我不知道如何使这个代码打印一些东西。而且两个链接中的两个代码都会产生很多错误。我不知道如何使用它。。。你能告诉我查什么吗?我需要在我的代码中添加一些类似于CMake代码中的宏吗?我不知道如何使这些代码打印一些东西。而且两个链接中的两个代码都会产生很多错误。我不知道如何使用它。。。你能告诉我查什么吗?我需要在我的代码中添加一些类似于CMake代码中的宏吗?我不知道如何使这些代码打印一些东西。而且两个链接中的两个代码都会产生很多错误。我不知道如何使用它。。。你能告诉我查什么吗?我需要在我的代码中添加一些类似于CMake代码中的宏吗?我不知道如何使这些代码打印一些东西。此外,在