# CMAKE_C_KNOWN_FEATURES

New in version 3.1.

List of C features known to this version of CMake.

The features listed in this global property may be known to be available to the C compiler. If the feature is available with the C compiler, it will be listed in the `CMAKE_C_COMPILE_FEATURES` variable.

The features listed here may be used with the `target_compile_features()` command. See the `cmake-compile-features(7)` manual for information on compile features and a list of supported compilers.

The features known to this version of CMake are listed below.

## High level meta features indicating C standard support

New in version 3.8.

`c_std_90`

  Compiler mode is at least C 90.

`c_std_99`

  Compiler mode is at least C 99.

`c_std_11`

  Compiler mode is at least C 11.

`c_std_17`

  New in version 3.21.

  Compiler mode is at least C 17.

`c_std_23`

  New in version 3.21.

  Compiler mode is at least C 23.

Note

If the compiler's default standard level is at least that of the requested feature, CMake may omit the `-std=` flag. The flag may still be added if the compiler's default extensions mode does not match the `<LANG>_EXTENSIONS` target property, or if the `<LANG>_STANDARD` target property is set.

## Low level individual compile features

`c_function_prototypes`

  Function prototypes, as defined in `ISO/IEC 9899:1990`.

`c_restrict`

  `restrict` keyword, as defined in `ISO/IEC 9899:1999`.

`c_static_assert`

  Static assert, as defined in `ISO/IEC 9899:2011`.

`c_variadic_macros`

  Variadic macros, as defined in `ISO/IEC 9899:1999`.