编译器相关
不同编译器特有的宏
- GNU:
__GNUC__
的值是 GCC 的版本号,类型为int
- MinGW:
__MINGW32__
- MSVC:
_MSC_VER
的值是 cl.exe 的版本, 类型为int
MSVC 编译器版本 | _MSC_VER 值 |
---|---|
MS VC++ 5.0 | 1100 |
MS VC++ 6.0 | 1200 |
MS VC++ 7.0 | 1300 |
MS VC++ 7.1 | 1310 |
MS VC++ 8.0 (Visual C++ 2005) | 1400 |
MS VC++ 9.0 (Visual C++ 2008) | 1500 |
- symbian:
__SYMBIAN32__
- 3rd MR 版及之前的 3rd 版本:
__SERIES60_30__
- 3rd FP1 版:
__SERIES60_31__
- 3rd FP2 版:
__SERIES60_32__
- 所有版本:
__SERIES60_3x__
- 3rd MR 版及之前的 3rd 版本:
gcc 和 clang 可以用
clang -dM -E -x c /dev/null
来打印输出预定义的宏
GNU 下将 typeid 得到类型名转为具有可读性的
#include <cxxabi.h>
char const * const realname = abi::__cxa_demangle(typeid(0).name(), 0, 0, 0);
free(realname)
显示函数签名
- MSVC: __FUNCSIG__, __FUNCDNAME__
- GCC: PRETTY_FUNCTION
参考资料