Domanda

C++ has a __cplusplus preprocessor define that lets you detect the version. Is there anything similar for C?

Preferably I'd like it to be portable across XCode, GCC, and Visual Studio versions.

È stato utile?

Soluzione

As per article on Wikipedia on C99

A standard macro __STDC_VERSION__ is defined with value 199901L to indicate that C99 support is available

#if __STDC_VERSION__ >= 199901L
   /*C99*/
#else
  /*Not C99*/
#endif

Altri suggerimenti

You can test the value of the macro __STDC_VERSION__ (note there are two underscores in the beginning and in the end), it should be larger than or equal to 199901L for C99 compatible platforms.

C11(ISO/IEC 9899:201x) §6.10.8.1 Mandatory macros

__STDC_VERSION__ The integer constant 201ymmL.

In the footnote:

This macro was not specified in ISO/IEC 9899:1990 and was specified as 199409L in ISO/IEC 9899/AMD1:1995 and as 199901L in ISO/IEC 9899:1999. The intention is that this will remain an integer constant of type long int that is increased with each revision of this International Standard.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top