2014-08-28 17 views

Antwort

10

In c11, static_assert ist ein assert.h Makro, das zu _Static_assert erweitert.

Sie können einfach verwenden:

#include <assert.h> 

#if defined(static_assert) 
// static_assert macro is defined 
#endif 

Beachten Sie, dass einige Compiler (zum Beispiel IAR) auch eine static_assert Keyword-Erweiterung haben, auch wenn sie unterstützen C11 nicht.

Wie in den Kommentaren erwähnt können Sie auch für c11 überprüfen:

#if (__STDC_VERSION >= 201112L) 
// it is c11, static_assert is defined when assert.h is included 
#endif 
+0

Dann wie funktioniert assert.h wissen, ob _Static_assert unterstützt wird? – yshui

+2

@yshui, die Standard-Header-Dateien wie 'assert.h' werden von der Plattform zur Verfügung gestellt, so haben sie ihre interne Magie zu wissen, was unterstützt wird oder nicht. Das ist genau das, was sie sind, also müssen Sie sich nicht um solche Features sorgen. –

Verwandte Themen