转载自来源: [C/C++] 显示各种C/C++编译器的预定义宏(C11标准、C++11标准、VC、BCB、Intel、GCC)

http://dev.gameres.com/Program/Other/ErrorDebug.htm
http://blog.csdn.net/sealyao/article/details/6169568

作者:zyl910

  在编写跨平台的程序时,我们经常使用预定义宏来检测编译环境。虽然编译器的手册中有预处理宏的介绍,但是不够详细,而且还有很多宏没有介绍。于是,我编写了一个小程序,显示常见C/C++编译器的编译器的预定义宏。

心得


  最直接的办法是逐个逐个的用#ifdef判断宏是否存在,然后再printf显示其内容。可是预定义宏有些是整数、有些是字符串,还有些是关键字不能直接用printf输出,用起来挺麻烦的。

  在网上发现一种不错办法,出自《关于CPP的预定义宏:unix、linux、i386、i586,大家中过招吗?》4楼“太平绅士”——

#include <stdio.h>#define PT_MAKE_STR(x)                { #x, PT_MAKE_STR_ESC(x) }
#define PT_MAKE_STR_ESC(x)        #xtypedef struct
{const char *name;const char *value;
} MACRO_T;/* Compilers */const MACRO_T g_compilers[ ] =
{
#ifdef __INTEL_COMPILER        /* Interl C++ */PT_MAKE_STR( __INTEL_COMPILER ),
#endif#ifdef _MSC_VER                        /* Visual C++ */PT_MAKE_STR( _MSC_VER ),
#endif#ifdef __GNUC__                        /* GCC */PT_MAKE_STR( __GNUC__ ),
#endif#ifdef __DMC__                        /* DMC++ */PT_MAKE_STR( __DMC__ ),
#endif#ifdef __ARMCC_VERSION        /* ARM C/C++ */PT_MAKE_STR( __ARMCC_VERSION ),
#endif
};/* Operation system */const MACRO_T g_platforms[ ] =
{
#ifdef _WIN32                        /* Windows 32 or Windows 64 */PT_MAKE_STR( _WIN32 ),
#endif#ifdef _WIN64                        /* Windows 64 */PT_MAKE_STR( _WIN64 ),
#endif#ifdef __MINGW32__                /* Windows32 by mingw compiler */PT_MAKE_STR( __MINGW32__ ),
#endif#ifdef __CYGWIN__                /* Cygwin */PT_MAKE_STR( __CYGWIN__ ),
#endif#ifdef __linux__                /* linux */PT_MAKE_STR( __linux__ ),
#endif#ifdef __FreeBSD__                /* FreeBSD */PT_MAKE_STR( __FreeBSD__ ),
#endif#ifdef __NetBSD__                /* NetBSD */PT_MAKE_STR( __NetBSD__ ),
#endif#ifdef __OpenBSD__                /* OpenBSD */PT_MAKE_STR( __OpenBSD__ ),
#endif#ifdef __sun__                /* Sun OS */PT_MAKE_STR( __sun__ ),
#endif#ifdef __MaxOSX__                /* MAC OS X */PT_MAKE_STR( __MaxOSX__ ),
#endif#ifdef __unix__                        /* unix */PT_MAKE_STR( __unix__ ),
#endif
};/* Other useful */const MACRO_T g_others[ ] =
{
#ifdef __DATE__ PT_MAKE_STR( __DATE__ ),
#endif#ifdef __TIME__ PT_MAKE_STR( __TIME__ ),
#endif#ifdef _BSD_SOURCEPT_MAKE_STR( _BSD_SOURCE ),
#endif#ifdef _POSIX_SOURCEPT_MAKE_STR( _POSIX_SOURCE ),
#endif#ifdef _XOPEN_SOURCEPT_MAKE_STR( _XOPEN_SOURCE ),
#endif#ifdef _GNU_SOURCEPT_MAKE_STR( _GNU_SOURCE ),
#endif#ifdef __GNUC_MINOR__PT_MAKE_STR( __GNUC_MINOR__ ),
#endif#ifdef __VERSION__PT_MAKE_STR( __VERSION__ ),
#endif#ifdef __unixPT_MAKE_STR( __unix ),
#endif
};int main( int argc, char **argv )
{int i;printf( "/* Compiler definitions. */\n" );for( i = 0; i < sizeof( g_compilers ) / sizeof( g_compilers[ 0 ] ); ++i ){printf( "#define %s %s\n", g_compilers[ i ].name, g_compilers[ i ].value );}printf( "\n" );printf( "/* Platform definitions. */\n" );for( i = 0; i < sizeof( g_platforms ) / sizeof( g_platforms[ 0 ] ); ++i ){printf( "#define %s %s\n", g_platforms[ i ].name, g_platforms[ i ].value );}printf( "\n" );printf( "/* Other definitions. */\n" );for( i = 0; i < sizeof( g_others ) / sizeof( g_others[ 0 ] ); ++i ){printf( "#define %s %s\n", g_others[ i ].name, g_others[ i ].value );}printf( "\n" );return 0;
}

  该方法巧妙的利用“#”运算将宏转成了字符串并填写数组,然后程序只需显示数组内容就行了。

  我在该方法的基础上做了三点改进——

  1. main函数中有很多相似的代码,区别仅仅是数组的不同。可以编写一个print_MACRO_T函数来显示MACRO_T数组,然后在main函数中对每一个数组调用该函数。

  2. 当某个数组的宏均不存在时,编译器会报错。可以在数组的第一行填上该类别的描述信息,保证编译通过。另一个好处是精简了main函数中显示不同类别描述信息的代码。

  3. 某些编译器不支持内容为空的宏(如BCB6)。这时只有手动#if做兼容性处理了。

全部代码


  预定义宏的数据来自——C11标准、C++11标准,及VC、BCB、Intel、GCC这些编译器。
  最初想删除重名的宏,后来考虑到需要对照各个编译器的手册,所以还是允许重名比较好。

#include <stdio.h>#define PT_MAKE_STR(x)    { #x, PT_MAKE_STR_ESC(x) }
#define PT_MAKE_STR_ESC(x)    #xtypedef struct tagMACRO_T
{const char *name;const char *value;
} MACRO_T;/* Compilers */
const MACRO_T g_compilers[] =
{{"[Compiler]", ""},#ifdef _MSC_VER            /* Visual C++ */PT_MAKE_STR( _MSC_VER ),
#endif#ifdef __BORLANDC__PT_MAKE_STR(__BORLANDC__),
#endif#ifdef __INTEL_COMPILER    /* Interl C++ */PT_MAKE_STR( __INTEL_COMPILER ),
#endif#ifdef __GNUC__            /* GCC */PT_MAKE_STR( __GNUC__ ),
#endif#ifdef __DMC__            /* DMC++ */PT_MAKE_STR( __DMC__ ),
#endif#ifdef __ARMCC_VERSION    /* ARM C/C++ */PT_MAKE_STR( __ARMCC_VERSION ),
#endif#ifdef __APPLE_CC__            /* Apple's own GCC */PT_MAKE_STR( __APPLE_CC__ ),
#endif
};/* Operation system */
const MACRO_T g_platforms[] =
{{"[Platform]", ""},#ifdef __i386__PT_MAKE_STR(__i386__),
#endif#ifdef __x86_64__PT_MAKE_STR(__x86_64__),
#endif#ifdef __AMD64__PT_MAKE_STR(__AMD64__),
#endif#ifdef __amd64__PT_MAKE_STR(__amd64__),
#endif#ifdef __ia64__PT_MAKE_STR(__ia64__),
#endif#ifdef __alpha__PT_MAKE_STR(__alpha__),
#endif#ifdef __arm__PT_MAKE_STR(__arm__),
#endif#ifdef __sparc__PT_MAKE_STR(__sparc__),
#endif#ifdef __arch64__PT_MAKE_STR(__arch64__),
#endif#ifdef __powerpc__PT_MAKE_STR(__powerpc__),
#endif#ifdef __powerpc64__PT_MAKE_STR(__powerpc64__),
#endif#ifdef __ppc__PT_MAKE_STR(__ppc__),
#endif#ifdef __ppc64__PT_MAKE_STR(__ppc64__),
#endif#ifdef _WIN32            /* Windows 32 or Windows 64 */PT_MAKE_STR( _WIN32 ),
#endif#ifdef _WIN64            /* Windows 64 */PT_MAKE_STR( _WIN64 ),
#endif#ifdef __MINGW32__        /* Windows32 by mingw compiler */PT_MAKE_STR( __MINGW32__ ),
#endif#ifdef __CYGWIN__        /* Cygwin */PT_MAKE_STR( __CYGWIN__ ),
#endif#ifdef __linux__        /* linux */PT_MAKE_STR( __linux__ ),
#endif#ifdef __FreeBSD__        /* FreeBSD */PT_MAKE_STR( __FreeBSD__ ),
#endif#ifdef __NetBSD__        /* NetBSD */PT_MAKE_STR( __NetBSD__ ),
#endif#ifdef __OpenBSD__        /* OpenBSD */PT_MAKE_STR( __OpenBSD__ ),
#endif#ifdef __sun__        /* Sun OS */PT_MAKE_STR( __sun__ ),
#endif#ifdef __MaxOSX__        /* MAC OS X */PT_MAKE_STR( __MaxOSX__ ),
#endif#ifdef __unix__            /* unix */PT_MAKE_STR( __unix__ ),
#endif
#ifdef __APPLE__PT_MAKE_STR( __APPLE__ ),
#endif#ifdef linuxPT_MAKE_STR( linux ),
#endif#ifdef _LINUXPT_MAKE_STR( _LINUX ),
#endif#ifdef __USE_BSDPT_MAKE_STR( __USE_BSD ),
#endif};/* Standard C. C11, C++11 */
const MACRO_T g_stdc[] =
{/* [C11]: ISO/IEC 9899:2011 - Information technology -- Programming languages -- C. http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=57853  *//* [C++11]: ISO/IEC 14882:2011 - Information technology -- Programming languages -- C++. http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372 */{"[Standard C]", ""},/* [C11] 6.10.8.1 Mandatory macros */
#ifdef __FILE__PT_MAKE_STR(__FILE__),
#endif#ifdef __LINE__PT_MAKE_STR(__LINE__),
#endif#ifdef __DATE__PT_MAKE_STR(__DATE__),
#endif#ifdef __TIME__PT_MAKE_STR(__TIME__),
#endif#ifdef __TIMESTAMP__PT_MAKE_STR(__TIMESTAMP__),
#endif#ifdef __STDC__PT_MAKE_STR(__STDC__),
#endif#ifdef __STDC_HOSTED__PT_MAKE_STR(__STDC_HOSTED__),
#endif#ifdef __STDC_VERSION__PT_MAKE_STR(__STDC_VERSION__),
#endif/* [C11] 6.10.8.2 Environment macros */
#ifdef __STDC_ISO_10646__PT_MAKE_STR(__STDC_ISO_10646__),
#endif#ifdef __STDC_MB_MIGHT_NEQ_WC__PT_MAKE_STR(__STDC_MB_MIGHT_NEQ_WC__),
#endif#ifdef __STDC_UTF_16__PT_MAKE_STR(__STDC_UTF_16__),
#endif#ifdef __STDC_UTF_32__PT_MAKE_STR(__STDC_UTF_32__),
#endif/* [C11] 6.10.8.3 Conditional feature macros */
#ifdef __STDC_ANALYZABLE__PT_MAKE_STR(__STDC_ANALYZABLE__),
#endif#ifdef __STDC_IEC_559__PT_MAKE_STR(__STDC_IEC_559__),
#endif#ifdef __STDC_IEC_559_COMPLEX__PT_MAKE_STR(__STDC_IEC_559_COMPLEX__),
#endif#ifdef __STDC_LIB_EXT1__PT_MAKE_STR(__STDC_LIB_EXT1__),
#endif#ifdef __STDC_NO_ATOMICS__PT_MAKE_STR(__STDC_NO_ATOMICS__),
#endif#ifdef __STDC_NO_COMPLEX__PT_MAKE_STR(__STDC_NO_COMPLEX__),
#endif#ifdef __STDC_NO_THREADS__PT_MAKE_STR(__STDC_NO_THREADS__),
#endif#ifdef __STDC_NO_VLA__PT_MAKE_STR(__STDC_NO_VLA__),
#endif/* [C++11] 16.8 Predefined macro names */
#ifdef __cplusplusPT_MAKE_STR(__cplusplus),
#endif#ifdef __STDCPP_STRICT_POINTER_SAFETY__PT_MAKE_STR(__STDCPP_STRICT_POINTER_SAFETY__),
#endif#ifdef __STDCPP_THREADS__PT_MAKE_STR(__STDCPP_THREADS__),
#endif
#ifdef __OBJC__PT_MAKE_STR(__OBJC__),
#endif#ifdef __ASSEMBLER__PT_MAKE_STR(__ASSEMBLER__),
#endif#ifdef NDEBUGPT_MAKE_STR(NDEBUG),
#endif
};/* Microsoft Visual C++. VC++ 2012 */
const MACRO_T g_vc[] =
{{"[Visual C++]", ""},#ifdef _ATL_VERPT_MAKE_STR(_ATL_VER),
#endif#ifdef _CHAR_UNSIGNEDPT_MAKE_STR(_CHAR_UNSIGNED),
#endif#ifdef __CLR_VERPT_MAKE_STR(__CLR_VER),
#endif#ifdef __cplusplus_cliPT_MAKE_STR(__cplusplus_cli),
#endif#ifdef __COUNTER__PT_MAKE_STR(__COUNTER__),
#endif#ifdef __cplusplusPT_MAKE_STR(__cplusplus),
#endif#ifdef _CPPRTTIPT_MAKE_STR(_CPPRTTI),
#endif#ifdef _CPPUNWINDPT_MAKE_STR(_CPPUNWIND),
#endif#ifdef _DEBUG#if (defined(__BORLANDC__)){"_DEBUG", "#"},#elsePT_MAKE_STR(_DEBUG),#endif
#endif#ifdef _DLLPT_MAKE_STR(_DLL),
#endif#ifdef __FUNCDNAME__PT_MAKE_STR(__FUNCDNAME__),
#endif#ifdef __FUNCSIG__PT_MAKE_STR(__FUNCSIG__),
#endif#ifdef __FUNCTION__PT_MAKE_STR(__FUNCTION__),
#endif#ifdef _INTEGRAL_MAX_BITSPT_MAKE_STR(_INTEGRAL_MAX_BITS),
#endif#ifdef _M_ALPHAPT_MAKE_STR(_M_ALPHA),
#endif#ifdef _M_AMD64PT_MAKE_STR(_M_AMD64),
#endif#ifdef _M_CEEPT_MAKE_STR(_M_CEE),
#endif#ifdef _M_CEE_PUREPT_MAKE_STR(_M_CEE_PURE),
#endif#ifdef _M_CEE_SAFEPT_MAKE_STR(_M_CEE_SAFE),
#endif#ifdef _M_IX86PT_MAKE_STR(_M_IX86),
#endif#ifdef _M_IA64PT_MAKE_STR(_M_IA64),
#endif#ifdef _M_IX86_FPPT_MAKE_STR(_M_IX86_FP),
#endif#ifdef _M_MPPCPT_MAKE_STR(_M_MPPC),
#endif#ifdef _M_MRX000PT_MAKE_STR(_M_MRX000),
#endif#ifdef _M_PPCPT_MAKE_STR(_M_PPC),
#endif#ifdef _M_X64PT_MAKE_STR(_M_X64),
#endif#ifdef _MANAGEDPT_MAKE_STR(_MANAGED),
#endif#ifdef _MFC_VERPT_MAKE_STR(_MFC_VER),
#endif#ifdef _MSC_BUILDPT_MAKE_STR(_MSC_BUILD),
#endif#ifdef _MSC_EXTENSIONSPT_MAKE_STR(_MSC_EXTENSIONS),
#endif#ifdef _MSC_FULL_VERPT_MAKE_STR(_MSC_FULL_VER),
#endif#ifdef _MSC_VERPT_MAKE_STR(_MSC_VER),
#endif#ifdef __MSVC_RUNTIME_CHECKSPT_MAKE_STR(__MSVC_RUNTIME_CHECKS),
#endif#ifdef _MTPT_MAKE_STR(_MT),
#endif#ifdef _NATIVE_WCHAR_T_DEFINEDPT_MAKE_STR(_NATIVE_WCHAR_T_DEFINED),
#endif#ifdef _OPENMPPT_MAKE_STR(_OPENMP),
#endif#ifdef _VC_NODEFAULTLIBPT_MAKE_STR(_VC_NODEFAULTLIB),
#endif#ifdef _WCHAR_T_DEFINED#if (defined(__BORLANDC__)){"_WCHAR_T_DEFINED", "#"},#elsePT_MAKE_STR(_WCHAR_T_DEFINED),#endif
#endif#ifdef _WIN32PT_MAKE_STR(_WIN32),
#endif#ifdef _WIN64PT_MAKE_STR(_WIN64),
#endif#ifdef _Wp64PT_MAKE_STR(_Wp64),
#endif
#ifdef _POSIX_PT_MAKE_STR(_POSIX_),
#endif#ifdef _CONSOLEPT_MAKE_STR(_CONSOLE),
#endif#ifdef _MBCSPT_MAKE_STR(_MBCS),
#endif#ifdef _UNICODEPT_MAKE_STR(_UNICODE),
#endif#ifdef UNICODEPT_MAKE_STR(UNICODE),
#endif
};/* Borland C++. C++ Builder 6.0 */
const MACRO_T g_borland[] =
{{"[Borland C++]", ""},
#ifdef __BCOPT__PT_MAKE_STR(__BCOPT__),
#endif#ifdef __BCPLUSPLUS__PT_MAKE_STR(__BCPLUSPLUS__),
#endif#ifdef __BORLANDC__PT_MAKE_STR(__BORLANDC__),
#endif#ifdef __CDECL__PT_MAKE_STR(__CDECL__),
#endif#ifdef _CHAR_UNSIGNEDPT_MAKE_STR(_CHAR_UNSIGNED),
#endif#ifdef __CODEGUARD__PT_MAKE_STR(__CODEGUARD__),
#endif#ifdef __CONSOLE__PT_MAKE_STR(__CONSOLE__),
#endif#ifdef _CPPUNWINDPT_MAKE_STR(_CPPUNWIND),
#endif#ifdef __DLL__PT_MAKE_STR(__DLL__),
#endif#ifdef __FLAT__PT_MAKE_STR(__FLAT__),
#endif#ifdef __FUNC__PT_MAKE_STR(__FUNC__),
#endif#ifdef _M_IX86PT_MAKE_STR(_M_IX86),
#endif#ifdef __MT__PT_MAKE_STR(__MT__),
#endif#ifdef __PASCAL__PT_MAKE_STR(__PASCAL__),
#endif#ifdef __TCPLUSPLUS__PT_MAKE_STR(__TCPLUSPLUS__),
#endif#ifdef __TEMPLATES__PT_MAKE_STR(__TEMPLATES__),
#endif#ifdef __TLS__PT_MAKE_STR(__TLS__),
#endif#ifdef __TURBOC__PT_MAKE_STR(__TURBOC__),
#endif#ifdef _WCHAR_T#if (defined(__BORLANDC__)){"_WCHAR_T", "#"},#elsePT_MAKE_STR(_WCHAR_T),#endif
#endif#ifdef _WCHAR_T_DEFINED#if (defined(__BORLANDC__)){"_WCHAR_T_DEFINED", "#"},#elsePT_MAKE_STR(_WCHAR_T_DEFINED),#endif
#endif#ifdef _WindowsPT_MAKE_STR(_Windows),
#endif#ifdef __WIN32__PT_MAKE_STR(__WIN32__),
#endif
#ifdef BCBVER1PT_MAKE_STR(BCBVER1),
#endif
};/* Intel C++: Windows. Intel C++ Compiler XE 12.1. */
const MACRO_T g_intel_win[] =
{{"[Intel C++: Windows]", ""},#ifdef __cilkPT_MAKE_STR(__cilk),
#endif#ifdef __COUNTER__PT_MAKE_STR(__COUNTER__),
#endif#ifdef __ECLPT_MAKE_STR(__ECL),
#endif#ifdef __EDG__PT_MAKE_STR(__EDG__),
#endif#ifdef __EDG_VERSION__PT_MAKE_STR(__EDG_VERSION__),
#endif#ifdef _exportPT_MAKE_STR(_export),
#endif#ifdef __ICLPT_MAKE_STR(__ICL),
#endif#ifdef _INC_STDIO#if (defined(__BORLANDC__)){"_INC_STDIO", "#"},#elsePT_MAKE_STR(_INC_STDIO),#endif
#endif#ifdef _INTEGRAL_MAX_BITSPT_MAKE_STR(_INTEGRAL_MAX_BITS),
#endif#ifdef __INTEL_COMPILERPT_MAKE_STR(__INTEL_COMPILER),
#endif#ifdef __INTEL_COMPILER_BUILD_DATEPT_MAKE_STR(__INTEL_COMPILER_BUILD_DATE),
#endif#ifdef __INTEL_MS_COMPAT_LEVELPT_MAKE_STR(__INTEL_MS_COMPAT_LEVEL),
#endif#ifdef __LONG_DOUBLE_SIZE__PT_MAKE_STR(__LONG_DOUBLE_SIZE__),
#endif#ifdef _M_AMD64PT_MAKE_STR(_M_AMD64),
#endif#ifdef _M_IX86PT_MAKE_STR(_M_IX86),
#endif#ifdef _M_IA64PT_MAKE_STR(_M_IA64),
#endif#ifdef _M_X64PT_MAKE_STR(_M_X64),
#endif#ifdef _MSC_EXTENSIONSPT_MAKE_STR(_MSC_EXTENSIONS),
#endif#ifdef _MSC_FULL_VERPT_MAKE_STR(_MSC_FULL_VER),
#endif#ifdef _MSC_VERPT_MAKE_STR(_MSC_VER),
#endif#ifdef _MTPT_MAKE_STR(_MT),
#endif#ifdef _OPENMPPT_MAKE_STR(_OPENMP),
#endif#ifdef _PGO_INSTRUMENTPT_MAKE_STR(_PGO_INSTRUMENT),
#endif#ifdef __QMSPP_PT_MAKE_STR(__QMSPP_),
#endif#ifdef __SIGNED_CHARS__PT_MAKE_STR(__SIGNED_CHARS__),
#endif#ifdef _SIZE_T_DEFINED#if (defined(__BORLANDC__)){"_SIZE_T_DEFINED", "#"},#elsePT_MAKE_STR(_SIZE_T_DEFINED),#endif
#endif#ifdef __STDC_VERSION__PT_MAKE_STR(__STDC_VERSION__),
#endif#ifdef __w64PT_MAKE_STR(__w64),
#endif#ifdef _WCHAR_T_DEFINED#if (defined(__BORLANDC__)){"_WCHAR_T_DEFINED", "#"},#elsePT_MAKE_STR(_WCHAR_T_DEFINED),#endif
#endif#ifdef _WCTYPE_T_DEFINED#if (defined(__BORLANDC__)){"_WCTYPE_T_DEFINED", "#"},#elsePT_MAKE_STR(_WCTYPE_T_DEFINED),#endif
#endif#ifdef _WIN32PT_MAKE_STR(_WIN32),
#endif#ifdef _WIN64PT_MAKE_STR(_WIN64),
#endif#ifdef _VA_LIST_DEFINEDPT_MAKE_STR(_VA_LIST_DEFINED),
#endif};/* Intel C++: Linux. Intel C++ Compiler XE 12.1. */
const MACRO_T g_intel_linux[] =
{{"[Intel C++: Linux]", ""},#ifdef __ARRAY_OPERATORSPT_MAKE_STR(__ARRAY_OPERATORS),
#endif#ifdef __BASE_FILE__PT_MAKE_STR(__BASE_FILE__),
#endif#ifdef _BOOLPT_MAKE_STR(_BOOL),
#endif#ifdef __cilkPT_MAKE_STR(__cilk),
#endif#ifdef __cplusplusPT_MAKE_STR(__cplusplus),
#endif#ifdef __DEPRECATEDPT_MAKE_STR(__DEPRECATED),
#endif#ifdef __EDG__PT_MAKE_STR(__EDG__),
#endif#ifdef __EDG_VERSION__PT_MAKE_STR(__EDG_VERSION__),
#endif#ifdef __ELF__PT_MAKE_STR(__ELF__),
#endif#ifdef __extension__PT_MAKE_STR(__extension__),
#endif#ifdef __EXCEPTIONSPT_MAKE_STR(__EXCEPTIONS),
#endif#ifdef __GNUC__PT_MAKE_STR(__GNUC__),
#endif#ifdef __GNUG__PT_MAKE_STR(__GNUG__),
#endif#ifdef __gnu_linux__PT_MAKE_STR(__gnu_linux__),
#endif#ifdef __GNUC_MINOR__PT_MAKE_STR(__GNUC_MINOR__),
#endif#ifdef __GNUC_PATCHLEVEL__PT_MAKE_STR(__GNUC_PATCHLEVEL__),
#endif#ifdef __GXX_ABI_VERSIONPT_MAKE_STR(__GXX_ABI_VERSION),
#endif#ifdef __HONOR_STDPT_MAKE_STR(__HONOR_STD),
#endif#ifdef __i386PT_MAKE_STR(__i386),
#endif#ifdef __i386__PT_MAKE_STR(__i386__),
#endif#ifdef i386PT_MAKE_STR(i386),
#endif#ifdef __ICCPT_MAKE_STR(__ICC),
#endif#ifdef __INTEL_COMPILERPT_MAKE_STR(__INTEL_COMPILER),
#endif#ifdef __INTEL_COMPILER_BUILD_DATEPT_MAKE_STR(__INTEL_COMPILER_BUILD_DATE),
#endif#ifdef __INTEL_RTTI__PT_MAKE_STR(__INTEL_RTTI__),
#endif#ifdef __INTEL_STRICT_ANSI__PT_MAKE_STR(__INTEL_STRICT_ANSI__),
#endif#ifdef __linuxPT_MAKE_STR(__linux),
#endif#ifdef __linux__PT_MAKE_STR(__linux__),
#endif#ifdef linuxPT_MAKE_STR(linux),
#endif#ifdef __LONG_DOUBLE_SIZE__PT_MAKE_STR(__LONG_DOUBLE_SIZE__),
#endif#ifdef __LONG_MAX__PT_MAKE_STR(__LONG_MAX__),
#endif#ifdef __LP64__PT_MAKE_STR(__LP64__),
#endif#ifdef _LP64PT_MAKE_STR(_LP64),
#endif#ifdef _MTPT_MAKE_STR(_MT),
#endif#ifdef __MMX__PT_MAKE_STR(__MMX__),
#endif#ifdef __NO_INLINE__PT_MAKE_STR(__NO_INLINE__),
#endif#ifdef __NO_MATH_INLINESPT_MAKE_STR(__NO_MATH_INLINES),
#endif#ifdef __NO_STRING_INLINESPT_MAKE_STR(__NO_STRING_INLINES),
#endif#ifdef _OPENMPPT_MAKE_STR(_OPENMP),
#endif#ifdef __OPTIMIZE__PT_MAKE_STR(__OPTIMIZE__),
#endif#ifdef __pentium4PT_MAKE_STR(__pentium4),
#endif#ifdef __pentium4__PT_MAKE_STR(__pentium4__),
#endif#ifdef __PIC__PT_MAKE_STR(__PIC__),
#endif#ifdef __pic__PT_MAKE_STR(__pic__),
#endif#ifdef _PGO_INSTRUMENTPT_MAKE_STR(_PGO_INSTRUMENT),
#endif#ifdef _PLACEMENT_DELETEPT_MAKE_STR(_PLACEMENT_DELETE),
#endif#ifdef __PTRDIFF_TYPE__PT_MAKE_STR(__PTRDIFF_TYPE__),
#endif#ifdef __REGISTER_PREFIX__PT_MAKE_STR(__REGISTER_PREFIX__),
#endif#ifdef __SIGNED_CHARS__PT_MAKE_STR(__SIGNED_CHARS__),
#endif#ifdef __SIZE_TYPE__PT_MAKE_STR(__SIZE_TYPE__),
#endif#ifdef __SSE__PT_MAKE_STR(__SSE__),
#endif#ifdef __SSE2__PT_MAKE_STR(__SSE2__),
#endif#ifdef __SSE3__PT_MAKE_STR(__SSE3__),
#endif#ifdef __SSSE3__PT_MAKE_STR(__SSSE3__),
#endif#ifdef __unixPT_MAKE_STR(__unix),
#endif#ifdef __unix__PT_MAKE_STR(__unix__),
#endif#ifdef unixPT_MAKE_STR(unix),
#endif#ifdef __USER_LABEL_PREFIX__PT_MAKE_STR(__USER_LABEL_PREFIX__),
#endif#ifdef __VERSION__PT_MAKE_STR(__VERSION__),
#endif#ifdef __WCHAR_TPT_MAKE_STR(__WCHAR_T),
#endif#ifdef __WCHAR_TYPE__PT_MAKE_STR(__WCHAR_TYPE__),
#endif#ifdef __WINT_TYPE__PT_MAKE_STR(__WINT_TYPE__),
#endif#ifdef __x86_64PT_MAKE_STR(__x86_64),
#endif};/* GCC */
const MACRO_T g_gcc[] =
{{"[GCC]", ""},#ifdef __COUNTER__PT_MAKE_STR(__COUNTER__),
#endif#ifdef __GFORTRAN__PT_MAKE_STR(__GFORTRAN__),
#endif#ifdef __GNUC__PT_MAKE_STR(__GNUC__),
#endif#ifdef __GNUC_MINOR__PT_MAKE_STR(__GNUC_MINOR__),
#endif#ifdef __GNUC_PATCHLEVEL__PT_MAKE_STR(__GNUC_PATCHLEVEL__),
#endif#ifdef __GNUG__PT_MAKE_STR(__GNUG__),
#endif#ifdef __STRICT_ANSI__PT_MAKE_STR(__STRICT_ANSI__),
#endif#ifdef __BASE_FILE__PT_MAKE_STR(__BASE_FILE__),
#endif#ifdef __INCLUDE_LEVEL__PT_MAKE_STR(__INCLUDE_LEVEL__),
#endif#ifdef __ELF__PT_MAKE_STR(__ELF__),
#endif#ifdef __VERSION__PT_MAKE_STR(__VERSION__),
#endif#ifdef __OPTIMIZE__PT_MAKE_STR(__OPTIMIZE__),
#endif#ifdef __OPTIMIZE_SIZE__PT_MAKE_STR(__OPTIMIZE_SIZE__),
#endif#ifdef __NO_INLINE__PT_MAKE_STR(__NO_INLINE__),
#endif#ifdef __GNUC_GNU_INLINE__PT_MAKE_STR(__GNUC_GNU_INLINE__),
#endif#ifdef __GNUC_STDC_INLINE__PT_MAKE_STR(__GNUC_STDC_INLINE__),
#endif#ifdef __CHAR_UNSIGNED__PT_MAKE_STR(__CHAR_UNSIGNED__),
#endif#ifdef __WCHAR_UNSIGNED__PT_MAKE_STR(__WCHAR_UNSIGNED__),
#endif#ifdef __REGISTER_PREFIX__PT_MAKE_STR(__REGISTER_PREFIX__),
#endif#ifdef __USER_LABEL_PREFIX__PT_MAKE_STR(__USER_LABEL_PREFIX__),
#endif#ifdef __SIZE_TYPE__PT_MAKE_STR(__SIZE_TYPE__),
#endif#ifdef __PTRDIFF_TYPE__PT_MAKE_STR(__PTRDIFF_TYPE__),
#endif#ifdef __WCHAR_TYPE__PT_MAKE_STR(__WCHAR_TYPE__),
#endif#ifdef __WINT_TYPE__PT_MAKE_STR(__WINT_TYPE__),
#endif#ifdef __INTMAX_TYPE__PT_MAKE_STR(__INTMAX_TYPE__),
#endif#ifdef __UINTMAX_TYPE__PT_MAKE_STR(__UINTMAX_TYPE__),
#endif#ifdef __SIG_ATOMIC_TYPE__PT_MAKE_STR(__SIG_ATOMIC_TYPE__),
#endif#ifdef __INT8_TYPE__PT_MAKE_STR(__INT8_TYPE__),
#endif#ifdef __INT16_TYPE__PT_MAKE_STR(__INT16_TYPE__),
#endif#ifdef __INT32_TYPE__PT_MAKE_STR(__INT32_TYPE__),
#endif#ifdef __INT64_TYPE__PT_MAKE_STR(__INT64_TYPE__),
#endif#ifdef __UINT8_TYPE__PT_MAKE_STR(__UINT8_TYPE__),
#endif#ifdef __UINT16_TYPE__PT_MAKE_STR(__UINT16_TYPE__),
#endif#ifdef __UINT32_TYPE__PT_MAKE_STR(__UINT32_TYPE__),
#endif#ifdef __UINT64_TYPE__PT_MAKE_STR(__UINT64_TYPE__),
#endif#ifdef __INT_LEAST8_TYPE__PT_MAKE_STR(__INT_LEAST8_TYPE__),
#endif#ifdef __INT_LEAST16_TYPE__PT_MAKE_STR(__INT_LEAST16_TYPE__),
#endif#ifdef __INT_LEAST32_TYPE__PT_MAKE_STR(__INT_LEAST32_TYPE__),
#endif#ifdef __INT_LEAST64_TYPE__PT_MAKE_STR(__INT_LEAST64_TYPE__),
#endif#ifdef __UINT_LEAST8_TYPE__PT_MAKE_STR(__UINT_LEAST8_TYPE__),
#endif#ifdef __UINT_LEAST16_TYPE__PT_MAKE_STR(__UINT_LEAST16_TYPE__),
#endif#ifdef __UINT_LEAST32_TYPE__PT_MAKE_STR(__UINT_LEAST32_TYPE__),
#endif#ifdef __UINT_LEAST64_TYPE__PT_MAKE_STR(__UINT_LEAST64_TYPE__),
#endif#ifdef __INT_FAST8_TYPE__PT_MAKE_STR(__INT_FAST8_TYPE__),
#endif#ifdef __INT_FAST16_TYPE__PT_MAKE_STR(__INT_FAST16_TYPE__),
#endif#ifdef __INT_FAST32_TYPE__PT_MAKE_STR(__INT_FAST32_TYPE__),
#endif#ifdef __INT_FAST64_TYPE__PT_MAKE_STR(__INT_FAST64_TYPE__),
#endif#ifdef __UINT_FAST8_TYPE__PT_MAKE_STR(__UINT_FAST8_TYPE__),
#endif#ifdef __UINT_FAST16_TYPE__PT_MAKE_STR(__UINT_FAST16_TYPE__),
#endif#ifdef __UINT_FAST32_TYPE__PT_MAKE_STR(__UINT_FAST32_TYPE__),
#endif#ifdef __UINT_FAST64_TYPE__PT_MAKE_STR(__UINT_FAST64_TYPE__),
#endif#ifdef __INTPTR_TYPE__PT_MAKE_STR(__INTPTR_TYPE__),
#endif#ifdef __UINTPTR_TYPE__PT_MAKE_STR(__UINTPTR_TYPE__),
#endif#ifdef __CHAR_BIT__PT_MAKE_STR(__CHAR_BIT__),
#endif#ifdef __SCHAR_MAX__PT_MAKE_STR(__SCHAR_MAX__),
#endif#ifdef __WCHAR_MAX__PT_MAKE_STR(__WCHAR_MAX__),
#endif#ifdef __SHRT_MAX__PT_MAKE_STR(__SHRT_MAX__),
#endif#ifdef __INT_MAX__PT_MAKE_STR(__INT_MAX__),
#endif#ifdef __LONG_MAX__PT_MAKE_STR(__LONG_MAX__),
#endif#ifdef __LONG_LONG_MAX__PT_MAKE_STR(__LONG_LONG_MAX__),
#endif#ifdef __WINT_MAX__PT_MAKE_STR(__WINT_MAX__),
#endif#ifdef __SIZE_MAX__PT_MAKE_STR(__SIZE_MAX__),
#endif#ifdef __PTRDIFF_MAX__PT_MAKE_STR(__PTRDIFF_MAX__),
#endif#ifdef __INTMAX_MAX__PT_MAKE_STR(__INTMAX_MAX__),
#endif#ifdef __UINTMAX_MAX__PT_MAKE_STR(__UINTMAX_MAX__),
#endif#ifdef __SIG_ATOMIC_MAX__PT_MAKE_STR(__SIG_ATOMIC_MAX__),
#endif#ifdef __INT8_MAX__PT_MAKE_STR(__INT8_MAX__),
#endif#ifdef __INT16_MAX__PT_MAKE_STR(__INT16_MAX__),
#endif#ifdef __INT32_MAX__PT_MAKE_STR(__INT32_MAX__),
#endif#ifdef __INT64_MAX__PT_MAKE_STR(__INT64_MAX__),
#endif#ifdef __UINT8_MAX__PT_MAKE_STR(__UINT8_MAX__),
#endif#ifdef __UINT16_MAX__PT_MAKE_STR(__UINT16_MAX__),
#endif#ifdef __UINT32_MAX__PT_MAKE_STR(__UINT32_MAX__),
#endif#ifdef __UINT64_MAX__PT_MAKE_STR(__UINT64_MAX__),
#endif#ifdef __INT_LEAST8_MAX__PT_MAKE_STR(__INT_LEAST8_MAX__),
#endif#ifdef __INT_LEAST16_MAX__PT_MAKE_STR(__INT_LEAST16_MAX__),
#endif#ifdef __INT_LEAST32_MAX__PT_MAKE_STR(__INT_LEAST32_MAX__),
#endif#ifdef __INT_LEAST64_MAX__PT_MAKE_STR(__INT_LEAST64_MAX__),
#endif#ifdef __UINT_LEAST8_MAX__PT_MAKE_STR(__UINT_LEAST8_MAX__),
#endif#ifdef __UINT_LEAST16_MAX__PT_MAKE_STR(__UINT_LEAST16_MAX__),
#endif#ifdef __UINT_LEAST32_MAX__PT_MAKE_STR(__UINT_LEAST32_MAX__),
#endif#ifdef __UINT_LEAST64_MAX__PT_MAKE_STR(__UINT_LEAST64_MAX__),
#endif#ifdef __INT_FAST8_MAX__PT_MAKE_STR(__INT_FAST8_MAX__),
#endif#ifdef __INT_FAST16_MAX__PT_MAKE_STR(__INT_FAST16_MAX__),
#endif#ifdef __INT_FAST32_MAX__PT_MAKE_STR(__INT_FAST32_MAX__),
#endif#ifdef __INT_FAST64_MAX__PT_MAKE_STR(__INT_FAST64_MAX__),
#endif#ifdef __UINT_FAST8_MAX__PT_MAKE_STR(__UINT_FAST8_MAX__),
#endif#ifdef __UINT_FAST16_MAX__PT_MAKE_STR(__UINT_FAST16_MAX__),
#endif#ifdef __UINT_FAST32_MAX__PT_MAKE_STR(__UINT_FAST32_MAX__),
#endif#ifdef __UINT_FAST64_MAX__PT_MAKE_STR(__UINT_FAST64_MAX__),
#endif#ifdef __INTPTR_MAX__PT_MAKE_STR(__INTPTR_MAX__),
#endif#ifdef __UINTPTR_MAX__PT_MAKE_STR(__UINTPTR_MAX__),
#endif#ifdef __WCHAR_MIN__PT_MAKE_STR(__WCHAR_MIN__),
#endif#ifdef __WINT_MIN__PT_MAKE_STR(__WINT_MIN__),
#endif#ifdef __SIG_ATOMIC_MIN__PT_MAKE_STR(__SIG_ATOMIC_MIN__),
#endif#ifdef __INT8_CPT_MAKE_STR(__INT8_C),
#endif#ifdef __INT16_CPT_MAKE_STR(__INT16_C),
#endif#ifdef __INT32_CPT_MAKE_STR(__INT32_C),
#endif#ifdef __INT64_CPT_MAKE_STR(__INT64_C),
#endif#ifdef __UINT8_CPT_MAKE_STR(__UINT8_C),
#endif#ifdef __UINT16_CPT_MAKE_STR(__UINT16_C),
#endif#ifdef __UINT32_CPT_MAKE_STR(__UINT32_C),
#endif#ifdef __UINT64_CPT_MAKE_STR(__UINT64_C),
#endif#ifdef __INTMAX_CPT_MAKE_STR(__INTMAX_C),
#endif#ifdef __UINTMAX_CPT_MAKE_STR(__UINTMAX_C),
#endif#ifdef __SIZEOF_INT__PT_MAKE_STR(__SIZEOF_INT__),
#endif#ifdef __SIZEOF_LONG__PT_MAKE_STR(__SIZEOF_LONG__),
#endif#ifdef __SIZEOF_LONG_LONG__PT_MAKE_STR(__SIZEOF_LONG_LONG__),
#endif#ifdef __SIZEOF_SHORT__PT_MAKE_STR(__SIZEOF_SHORT__),
#endif#ifdef __SIZEOF_POINTER__PT_MAKE_STR(__SIZEOF_POINTER__),
#endif#ifdef __SIZEOF_FLOAT__PT_MAKE_STR(__SIZEOF_FLOAT__),
#endif#ifdef __SIZEOF_DOUBLE__PT_MAKE_STR(__SIZEOF_DOUBLE__),
#endif#ifdef __SIZEOF_LONG_DOUBLE__PT_MAKE_STR(__SIZEOF_LONG_DOUBLE__),
#endif#ifdef __SIZEOF_SIZE_T__PT_MAKE_STR(__SIZEOF_SIZE_T__),
#endif#ifdef __SIZEOF_WCHAR_T__PT_MAKE_STR(__SIZEOF_WCHAR_T__),
#endif#ifdef __SIZEOF_WINT_T__PT_MAKE_STR(__SIZEOF_WINT_T__),
#endif#ifdef __SIZEOF_PTRDIFF_T__PT_MAKE_STR(__SIZEOF_PTRDIFF_T__),
#endif#ifdef __BYTE_ORDER__PT_MAKE_STR(__BYTE_ORDER__),
#endif#ifdef __ORDER_LITTLE_ENDIAN__PT_MAKE_STR(__ORDER_LITTLE_ENDIAN__),
#endif#ifdef __ORDER_BIG_ENDIAN__PT_MAKE_STR(__ORDER_BIG_ENDIAN__),
#endif#ifdef __ORDER_PDP_ENDIAN__PT_MAKE_STR(__ORDER_PDP_ENDIAN__),
#endif#ifdef __FLOAT_WORD_ORDER__PT_MAKE_STR(__FLOAT_WORD_ORDER__),
#endif#ifdef __DEPRECATEDPT_MAKE_STR(__DEPRECATED),
#endif#ifdef __EXCEPTIONSPT_MAKE_STR(__EXCEPTIONS),
#endif#ifdef __GXX_RTTIPT_MAKE_STR(__GXX_RTTI),
#endif#ifdef __USING_SJLJ_EXCEPTIONS__PT_MAKE_STR(__USING_SJLJ_EXCEPTIONS__),
#endif#ifdef __GXX_EXPERIMENTAL_CXX0X__PT_MAKE_STR(__GXX_EXPERIMENTAL_CXX0X__),
#endif#ifdef __GXX_WEAK__PT_MAKE_STR(__GXX_WEAK__),
#endif#ifdef __NEXT_RUNTIME__PT_MAKE_STR(__NEXT_RUNTIME__),
#endif#ifdef __LP64__PT_MAKE_STR(__LP64__),
#endif#ifdef _LP64PT_MAKE_STR(_LP64),
#endif#ifdef __SSP__PT_MAKE_STR(__SSP__),
#endif#ifdef __SSP_ALL__PT_MAKE_STR(__SSP_ALL__),
#endif#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1PT_MAKE_STR(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1),
#endif#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2PT_MAKE_STR(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2),
#endif#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4PT_MAKE_STR(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4),
#endif#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8PT_MAKE_STR(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8),
#endif#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16PT_MAKE_STR(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16),
#endif#ifdef __GCC_HAVE_DWARF2_CFI_ASMPT_MAKE_STR(__GCC_HAVE_DWARF2_CFI_ASM),
#endif#ifdef __FP_FAST_FMAPT_MAKE_STR(__FP_FAST_FMA),
#endif#ifdef __FP_FAST_FMAFPT_MAKE_STR(__FP_FAST_FMAF),
#endif#ifdef __FP_FAST_FMALPT_MAKE_STR(__FP_FAST_FMAL),
#endif
#ifdef __WORDSIZEPT_MAKE_STR(__WORDSIZE),
#endif
};/* Other useful */
const MACRO_T g_others[] =
{{"[Other]", ""},#ifdef _BSD_SOURCEPT_MAKE_STR( _BSD_SOURCE ),
#endif#ifdef _POSIX_SOURCEPT_MAKE_STR( _POSIX_SOURCE ),
#endif#ifdef _XOPEN_SOURCEPT_MAKE_STR( _XOPEN_SOURCE ),
#endif#ifdef _GNU_SOURCEPT_MAKE_STR( _GNU_SOURCE ),
#endif#ifdef __BIG_ENDIAN__PT_MAKE_STR( __BIG_ENDIAN__ ),
#endif#ifdef __LITTLE_ENDIAN__PT_MAKE_STR( __LITTLE_ENDIAN__ ),
#endif
};void print_MACRO_T(const MACRO_T* pArray, int cnt)
{int i;for( i = 0; i < cnt; ++i ){printf( "%s\t%s\n", pArray[i].name, pArray[i].value );}printf( "\n" );
}int main( int argc, char *argv[])
{print_MACRO_T(g_compilers, sizeof(g_compilers)/sizeof(g_compilers[0]));print_MACRO_T(g_platforms, sizeof(g_platforms)/sizeof(g_platforms[0]));print_MACRO_T(g_stdc, sizeof(g_stdc)/sizeof(g_stdc[0]));print_MACRO_T(g_vc, sizeof(g_vc)/sizeof(g_vc[0]));print_MACRO_T(g_borland, sizeof(g_borland)/sizeof(g_borland[0]));print_MACRO_T(g_intel_win, sizeof(g_intel_win)/sizeof(g_intel_win[0]));print_MACRO_T(g_intel_linux, sizeof(g_intel_linux)/sizeof(g_intel_linux[0]));print_MACRO_T(g_gcc, sizeof(g_gcc)/sizeof(g_gcc[0]));print_MACRO_T(g_others, sizeof(g_others)/sizeof(g_others[0]));return 0;
}

在以下编译器中成功编译——
VC6
VC2003
VC2005
VC2010(x86与x64)
BCB6
GCC 4.7.0(Fedora 17)
GCC 4.6.2(MinGW (20120426))

参考文献


《ISO/IEC 9899:2011 - Information technology – Programming languages – C》. ISO/IEC, 2011.

《ISO/IEC 14882:2011 - Information technology – Programming languages – C++》. ISO/IEC, 2011.

《[VS2012] Predefined Macros》. Microsoft, 2012.

《[VS2012] 预定义的宏》. Microsoft, 2012.

[《[BCB6] C++Builder Language Guide》中的《Predefined macros》. Borland, 2002.

《Intel® C++ Compiler XE 12.1 User and Reference Guides》(Windows版)中的《Additional Predefined Macros》. Intel, 2011.

《Intel® C++ Compiler XE 12.1 User and Reference Guides》(Linux版)中的《Additional Predefined Macros》. Intel, 2011.

《[GCC] The C Preprocessor》中的《3.7.2 Common Predefined Macros》. GNU, 2011.

《关于CPP的预定义宏:unix、linux、i386、i586,大家中过招吗?》. 太平绅士, 2009-02-10.

《C\C++宏大全》.

《Useful GCC Macros》. OneSadCookie, 2007-07-12.

《[笔记] Intel C++编译器的预定义宏(Windows版、Linux版)》.

Standard-Predefined-Macros

Common-Predefined-Macros

源码下载

[C/C++] 显示各种C/C++编译器的预定义宏(C11标准、C++11标准、VC、BCB、Intel、GCC)相关推荐

  1. 编译器预定义宏的查看和使用

    1.查看不同编译器的预定义宏(内建宏定义): http://nadeausoftware.com/articles/2011/12/c_c_tip_how_list_compiler_predefin ...

  2. 2019-11-07 检查gcc交叉编译器预定义宏(ARM32/ARM64/X86-64)以及对浮点数的支持情况

    预备知识1 armel.armhf和arm64区别选择 https://www.veryarm.com/872.html 预备知识2 https://www.veryarm.com/872.html ...

  3. RedHat gcc编译器版本升级到4.8.2支持C++11标准

    原来环境信息 Red Hat Enterprise Linux Server release 6.4 (Santiago) gcc4.4.7 升级到gcc4.8.2 gcc4.8以上版本才支持C++1 ...

  4. 编译器预定义宏 (Predefined Macros)

    https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=vs-2017

  5. 跨平台常用的编译器预定义的宏

    跨平台常用的宏 #ifdef _WIN32 //define something for Windows (32-bit and 64-bit, this part is common) #ifdef ...

  6. php定义常量、判断有没有被定义、预定义常量、显示所有常量

    常量一旦被定义,在脚本的其他任何地方都不能被改变,注意:常量名的前面没有$ 语法:define(name,value,case_insensitive ) name:常量名,一般常量名都大写 valu ...

  7. 创建一个显示所有预定义系统颜色的ListBox

    原文 Creating a ListBox that Shows All Predefined System Colors 该System.Windows.SystemColors类包含了一系列揭露当 ...

  8. 为Sublime Text 3的C++编译器(g++)添加C++11标准的方法

    写在前面 最近熟悉了使用Sublime写C++单文件并编译的方法, 但是美中不足的就是不能使用C++11的新特性, 网上有的方法是修改默认的编译命令, 这个方法需要修改安装目录下的一个文件, 还要解压 ...

  9. 微软商店,打开就显示无法加载该页面 代码0x80131500,网上一般不说的标准解决方案

    微软商店,打开就显示无法加载该页面 代码0x80131500,在试过大部分人给出的解决方案后依然无法解决问题,可以试试我的办法 微软商店打开以后出现这样的界面 一般百度或者是在csdn社区找答案就那么 ...

最新文章

  1. UVa978 - Lemmings Battle!(优先级队列)
  2. 【福利】有道云笔记免费送30天VIP会员,有道云笔记功能优缺点汇总
  3. Oracle 12C R2-新特性-转换函数的增强
  4. Layui / WEB UI
  5. AT3949-[AGC022D]Shopping【贪心】
  6. C 常用新特性(下)
  7. Nokia N70 Production Video
  8. 程序员,你总要有点自己的想法吧!
  9. java 数据结构 pdf_数据结构java版本.pdf
  10. 01-----YUV各种格式的详解
  11. mathquill web公式编辑器 总结 、实列、 源码
  12. 量子启蒙:99%的人是从漫威电影起步的
  13. PADS Logic原理图设计
  14. 2020,好看视频的创作生态棋局
  15. 面向模式的软件体系结构(卷1-5
  16. 【七夕特效】 -- 满屏爱心
  17. 2023真无线蓝牙耳机怎么选?值得入手的蓝牙耳机推荐
  18. OCR识别系列之一-----文档字符识别
  19. Altium Designer 中英文字典(英文菜单汉化对应表表)
  20. [游戏技术]求生之路服务器参数配置

热门文章

  1. Source Insight 工程操作
  2. 红蜘蛛解控代码(可用)
  3. length测量数组长度
  4. 使用C++模板获取数组长度
  5. 基于android的旅游景点APP
  6. 采用艾恩asp上传的角本
  7. SpringMVC的controler返json数据
  8. Yii2基本使用汇总
  9. 李嘉诚为何永远在赚钱?他有4招独门“财技”
  10. Android仿QQ空间底部菜单