nialv7
nialv7

Reputation: 219

How to detect if a compiler supports static_assert?

I want to detect, in source file, if the compiler used supports static_assert.

Upvotes: 8

Views: 2898

Answers (1)

ouah
ouah

Reputation: 145839

In c11, static_assert is an assert.h macro that expands to _Static_assert.

You can just use:

#include <assert.h>

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

Note that some compilers (e.g., IAR) also have a static_assert keyword extension even if they don't support C11.

As mentioned in the comments you can also check for c11:

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

Upvotes: 15

Related Questions