devxlogo

Determine Whether a C or C++ Compiler Was Used to Compile Code

Determine Whether a C or C++ Compiler Was Used to Compile Code

The code below contains standard, pre-defined macros used at runtime to determine whether a C or C++ compiler was used to compile the code. For C compilers, it also determines the version of the C language standard that the compiler implements).

NOTE: Some people prefer to use STDC_HEADERS rather than __STDC__..

#ifdef __cplusplus printf("C++ compiler
");#else#ifdef __STDC__#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) ||/*continue..    ...on the next line */ (defined(__GNUC__) && !defined(__STRICT_ANSI__)) printf("ANSI X3.159-1999 / ISO 9899:1999 (C99) compiler
");#else printf("ANSI X3.159-1989 (C89) / ISO/IEC 9899:1990 (C90) C compiler
");#endif#else printf("Pre-ANSI (K&R) C compiler
");#endif#endif

The code below determines whether a C or C++ compiler was used to compile the code at runtime:

if (sizeof('c') != sizeof(int)) printf("C++ compiler
");else if ((unsigned char)1 < -1)	printf("Pre-ANSI (K&R) C compiler
");else { int i;	i = 1 //* */ +1;if (i == 2) printf("ANSI X3.159-1999 / ISO 9899:1999 (C99) compiler
");else printf("ANSI X3.159-1989 (C89) / ISO/IEC 9899:1990 (C90) C compiler
");}

devx-admin

Share the Post: