2014-08-28 10 views

risposta

10

In c11, static_assert è una macro che si espande a _Static_assert.

si può semplicemente utilizzare:

#include <assert.h> 

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

Nota che alcuni compilatori (ad esempio, IAR) hanno anche un'estensione static_assert parola chiave, anche se non supportano C11.

Come accennato nei commenti si può anche verificare la presenza di C11:

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

E allora come fa a sapere se assert.h _Static_assert è supportato? – yshui

+2

@yshui, i file di intestazione standard come 'assert.h' sono forniti dalla piattaforma, quindi hanno la loro magia interna per sapere cosa è supportato o meno. Questo è esattamente il siero di latte che sono qui, quindi non devi preoccuparti di queste caratteristiche. –

Problemi correlati