C:运行时的编译器信息

时间:2010-07-09 11:32:50

标签: c compiler-construction

有没有办法打印编译器的名称和用于编译程序的版本,如:

printf("This is compiled with %s version %s\n", COMPILER, COMPILER_VERSION);

2 个答案:

答案 0 :(得分:9)

您可以使用预处理器执行此操作:

参考:http://predef.sourceforge.net/precomp.html

对于gcc:

#if defined(__GNUC__)
# if defined(__GNUC_PATCHLEVEL__)
#  define __GNUC_VERSION__ (__GNUC__ * 10000 \
                            + __GNUC_MINOR__ * 100 \
                            + __GNUC_PATCHLEVEL__)
# else
#  define __GNUC_VERSION__ (__GNUC__ * 10000 \
                            + __GNUC_MINOR__ * 100)
# endif
#endif

对于MSVC,只需使用:

_MSC_FULL_VER

答案 1 :(得分:4)

不,获取编译器名称的方法本身就是编译器特定的:-P。

不过,

gcc提供了__VERSION__宏。