2 # error "A C++ compiler has been selected for C."    12 #if defined(__INTEL_COMPILER) || defined(__ICC)    13 # define COMPILER_ID "Intel"    15 # define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)    16 # define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)    17 # define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER    % 10)    18 # if defined(__INTEL_COMPILER_BUILD_DATE)    20 #  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)    23 #elif defined(__PATHCC__)    24 # define COMPILER_ID "PathScale"    25 # define COMPILER_VERSION_MAJOR DEC(__PATHCC__)    26 # define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)    27 # if defined(__PATHCC_PATCHLEVEL__)    28 #  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)    31 #elif defined(__clang__)    32 # define COMPILER_ID "Clang"    33 # define COMPILER_VERSION_MAJOR DEC(__clang_major__)    34 # define COMPILER_VERSION_MINOR DEC(__clang_minor__)    35 # define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)    37 #elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)    38 # define COMPILER_ID "Embarcadero"    39 # define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)    40 # define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)    41 # define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__     & 0xFFFF)    43 #elif defined(__BORLANDC__)    44 # define COMPILER_ID "Borland"    46 # define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)    47 # define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)    49 #elif defined(__WATCOMC__)    50 # define COMPILER_ID "Watcom"    52 # define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)    53 # define COMPILER_VERSION_MINOR DEC(__WATCOMC__ % 100)    55 #elif defined(__SUNPRO_C)    56 # define COMPILER_ID "SunPro"    57 # if __SUNPRO_C >= 0x5100    59 #  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)    60 #  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)    61 #  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)    64 #  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)    65 #  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)    66 #  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)    69 #elif defined(__HP_cc)    70 # define COMPILER_ID "HP"    72 # define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)    73 # define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)    74 # define COMPILER_VERSION_PATCH DEC(__HP_cc     % 100)    77 # define COMPILER_ID "Compaq"    79 # define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)    80 # define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000  % 100)    81 # define COMPILER_VERSION_PATCH DEC(__DECC_VER         % 10000)    83 #elif defined(__IBMC__)    84 # if defined(__COMPILER_VER__)    85 #  define COMPILER_ID "zOS"    88 #   define COMPILER_ID "XL"    90 #   define COMPILER_ID "VisualAge"    93 #  define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)    94 #  define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)    95 #  define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)    99 # define COMPILER_ID "PGI"   100 # define COMPILER_VERSION_MAJOR DEC(__PGIC__)   101 # define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)   102 # if defined(__PGIC_PATCHLEVEL__)   103 #  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)   106 #elif defined(_CRAYC)   107 # define COMPILER_ID "Cray"   108 # define COMPILER_VERSION_MAJOR DEC(_RELEASE)   109 # define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)   111 #elif defined(__TI_COMPILER_VERSION__)   112 # define COMPILER_ID "TI"   114 # define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)   115 # define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)   116 # define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)   118 #elif defined(__TINYC__)   119 # define COMPILER_ID "TinyCC"   121 #elif defined(__SCO_VERSION__)   122 # define COMPILER_ID "SCO"   124 #elif defined(__GNUC__)   125 # define COMPILER_ID "GNU"   126 # define COMPILER_VERSION_MAJOR DEC(__GNUC__)   127 # define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)   128 # if defined(__GNUC_PATCHLEVEL__)   129 #  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)   132 #elif defined(_MSC_VER)   133 # define COMPILER_ID "MSVC"   135 # define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)   136 # define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)   137 # if defined(_MSC_FULL_VER)   138 #  if _MSC_VER >= 1400   140 #   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)   143 #   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)   146 # if defined(_MSC_BUILD)   147 #  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)   151 #elif defined(__VISUALDSPVERSION__)   152 # define COMPILER_ID "ADSP"   154 # define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)   155 # define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)   156 # define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8  & 0xFF)   159 #elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)   160 # define COMPILER_ID "ADSP"   164 #elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)   165 # define COMPILER_ID "IAR"   170 # define COMPILER_ID "SDCC"   172 #  define COMPILER_VERSION_MAJOR DEC(SDCC/100)   173 #  define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)   174 #  define COMPILER_VERSION_PATCH DEC(SDCC    % 10)   176 #elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)   177 # define COMPILER_ID "MIPSpro"   178 # if defined(_SGI_COMPILER_VERSION)   180 #  define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)   181 #  define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)   182 #  define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION    % 10)   185 #  define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)   186 #  define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)   187 #  define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION    % 10)   194 # define COMPILER_ID "MIPSpro"   196 #elif defined(__hpux) || defined(__hpua)   197 # define COMPILER_ID "HP"   200 # define COMPILER_ID ""   211 #if defined(__linux) || defined(__linux__) || defined(linux)   212 # define PLATFORM_ID "Linux"   214 #elif defined(__CYGWIN__)   215 # define PLATFORM_ID "Cygwin"   217 #elif defined(__MINGW32__)   218 # define PLATFORM_ID "MinGW"   220 #elif defined(__APPLE__)   221 # define PLATFORM_ID "Darwin"   223 #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)   224 # define PLATFORM_ID "Windows"   226 #elif defined(__FreeBSD__) || defined(__FreeBSD)   227 # define PLATFORM_ID "FreeBSD"   229 #elif defined(__NetBSD__) || defined(__NetBSD)   230 # define PLATFORM_ID "NetBSD"   232 #elif defined(__OpenBSD__) || defined(__OPENBSD)   233 # define PLATFORM_ID "OpenBSD"   235 #elif defined(__sun) || defined(sun)   236 # define PLATFORM_ID "SunOS"   238 #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)   239 # define PLATFORM_ID "AIX"   241 #elif defined(__sgi) || defined(__sgi__) || defined(_SGI)   242 # define PLATFORM_ID "IRIX"   244 #elif defined(__hpux) || defined(__hpux__)   245 # define PLATFORM_ID "HP-UX"   247 #elif defined(__HAIKU__)   248 # define PLATFORM_ID "Haiku"   250 #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)   251 # define PLATFORM_ID "BeOS"   253 #elif defined(__QNX__) || defined(__QNXNTO__)   254 # define PLATFORM_ID "QNX"   256 #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)   257 # define PLATFORM_ID "Tru64"   259 #elif defined(__riscos) || defined(__riscos__)   260 # define PLATFORM_ID "RISCos"   262 #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)   263 # define PLATFORM_ID "SINIX"   265 #elif defined(__UNIX_SV__)   266 # define PLATFORM_ID "UNIX_SV"   268 #elif defined(__bsdos__)   269 # define PLATFORM_ID "BSDOS"   271 #elif defined(_MPRAS) || defined(MPRAS)   272 # define PLATFORM_ID "MP-RAS"   274 #elif defined(__osf) || defined(__osf__)   275 # define PLATFORM_ID "OSF1"   277 #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)   278 # define PLATFORM_ID "SCO_SV"   280 #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)   281 # define PLATFORM_ID "ULTRIX"   283 #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)   284 # define PLATFORM_ID "Xenix"   287 # define PLATFORM_ID ""   296 #if defined(_WIN32) && defined(_MSC_VER)   297 # if defined(_M_IA64)   298 #  define ARCHITECTURE_ID "IA64"   300 # elif defined(_M_X64) || defined(_M_AMD64)   301 #  define ARCHITECTURE_ID "x64"   303 # elif defined(_M_IX86)   304 #  define ARCHITECTURE_ID "X86"   306 # elif defined(_M_ARM)   307 #  define ARCHITECTURE_ID "ARM"   309 # elif defined(_M_MIPS)   310 #  define ARCHITECTURE_ID "MIPS"   312 # elif defined(_M_SH)   313 #  define ARCHITECTURE_ID "SHx"   316 #  define ARCHITECTURE_ID ""   320 #  define ARCHITECTURE_ID ""   325   ('0' + (((n) / 10000000)%10)), \   326   ('0' + (((n) / 1000000)%10)),  \   327   ('0' + (((n) / 100000)%10)),   \   328   ('0' + (((n) / 10000)%10)),    \   329   ('0' + (((n) / 1000)%10)),     \   330   ('0' + (((n) / 100)%10)),      \   331   ('0' + (((n) / 10)%10)),       \   336   ('0' + ((n)>>28 & 0xF)), \   337   ('0' + ((n)>>24 & 0xF)), \   338   ('0' + ((n)>>20 & 0xF)), \   339   ('0' + ((n)>>16 & 0xF)), \   340   ('0' + ((n)>>12 & 0xF)), \   341   ('0' + ((n)>>8  & 0xF)), \   342   ('0' + ((n)>>4  & 0xF)), \   346 #ifdef COMPILER_VERSION_MAJOR   347 char const info_version[] = {
   348   'I', 
'N', 
'F', 
'O', 
':',
   349   'c',
'o',
'm',
'p',
'i',
'l',
'e',
'r',
'_',
'v',
'e',
'r',
's',
'i',
'o',
'n',
'[',
   350   COMPILER_VERSION_MAJOR,
   351 # ifdef COMPILER_VERSION_MINOR   352   '.', COMPILER_VERSION_MINOR,
   353 #  ifdef COMPILER_VERSION_PATCH   354    '.', COMPILER_VERSION_PATCH,
   355 #   ifdef COMPILER_VERSION_TWEAK   356     '.', COMPILER_VERSION_TWEAK,
   377 int main(
int argc, 
char* argv[])
   383 #ifdef COMPILER_VERSION_MAJOR   384   require += info_version[argc];
 
char const  * info_compiler
int main(int argc, char *argv[])
char const  * info_platform