__attribute__s
GNU-like attribute syntax. Implemented:
aligned(alignment),packednoreturn(treated as C11_Noreturn)mode
Other attributes for correctness hints/diagnostics are recognized (format,
nonnull, etc) but discarded.
__builtin functions
- variadic arguments:
__builtin_va_start/copy/end/arg, and__builtin_va_listtype __builtin_trap,__builtin_unreachable__builtin_bswap16/32/64__builtin_constant_p__builtin_expect__builtin_alloca__builtin_huge_val*/inf*/nan*/nans*__builtin_isinf,__builtin_isnan__builtin_ffs*/clz*/ctz*/clrsb*/popcount*/parity*
Other GNU C language extensions
- Statement expressions
({ ... }) __typeof__,__alignof____asm__for symbol renaming- zero-sized arrays, empty structs/unions
returning void expression in void function- elvis operator
a ?: b - forward-declared enums
__FUNCTION__,__PRETTY_FUNCTION__as synonyms for__func__- applying
_Alignofto an expression - some constant-foldable expressions in contexts where integer constant expressions are required
'\e'escape sequence- Various alternate keywords:
__const,__inline, etc
Preprocessor extensions
#include_next#pragma once,#warning#pragma GCC diagnostic/#pragma clang diagnostic(stub)__has_include/__has_include_next__has_attribute/__has_builtin__COUNTER__,__VA_OPT__,##__VA_ARGS__comma swallowing- named variadic macro arguments
#define mac(args...) - alternate
#linedirectives:#line-number filename - embedding preprocessor directives within macro arguments