Gnulib avoids some features even though they are standardized by C99, as they have portability problems in practice. Here is a partial list of avoided C99 features. Many other C99 features are portable only if their corresponding modules are used; Gnulib code that uses such a feature should require the corresponding module.
__STDC_NO_VLA__is defined. See the
__STDC_NO_VLA__is defined. This lets you define
GNULIB_NO_VLAto pacify GCC when using its -Wvla-larger-than warnings option, and to avoid large stack usage that may have security implications.
GNULIB_NO_VLAdoes not affect Gnulib’s other uses of VLAs and variably modified types, such as array declarations in function prototype scope.
extern inlinefunctions, without checking whether they are supported. See Extern inline functions.
<iso646.h>, since GNU programs need not worry about deficient source-code encodings.