cpowf

Defined in header <complex.h> float complex cpowf( float complex x, float complex y ); (1) (since C99) double complex cpow( double complex x, double complex y ); (2) (since C99) long double complex cpowl( long double complex x, long double complex y ); (3) (since C99) Defined in header <tgmath.h> #define pow( x, y ) (4) (since C99) 1-3) Computes the complex power function xy, with branch cut for the first parameter along the negati

mbstate_t

Defined in header <wchar.h> struct mbstate_t; (since C95) The type mbstate_t is a trivial non-array type that can represent any of the conversion states that can occur in an implementation-defined set of supported multibyte character encoding rules. Zero-initialized value of mbstate_t represents the initial conversion state, although other values of mbstate_t may exist that also represent the initial conversion state. Possible implementation of mbstate_t is a struct type ho

thrd_success

Defined in header <threads.h> enum { thrd_success = /* unspecified */, thrd_nomem = /* unspecified */, thrd_timedout = /* unspecified */, thrd_busy = /* unspecified */, thrd_error = /* unspecified */ }; (since C11) Identifiers a thread error state. Constant Explanation thrd_success indicates successful return value thrd_timedout indicates timed out return value thrd_busy indicates unsuccessful return value due to resource temporary unavail

Phases of translation

The C source file is processed by the compiler as if the following phases take place, in this exact order. Actual implementation may combine these actions or process them differently as long as the behavior is the same. Phase 1 1) The individual bytes of the source code file (which is generally a text file in some multibyte encoding such as UTF-8) are mapped, in implementation defined manner, to the characters of the source character set. In particular, OS-dependent end-of-line indicators a

Preprocessor

The preprocessor is executed at translation phase 4, before the compilation. The result of preprocessing is single file which is then passed to the actual compiler. Directives The preprocessing directives control the behavior of the preprocessor. Each directive occupies one line and has the following format: # character preprocessing instruction (one of define, undef, include, if, ifdef, ifndef, else, elif, endif, line, error, pragma) [1] arguments (depends on the instruction) line bre

static_assert

Defined in header <assert.h> #define static_assert _Static_assert This convenience macro expands to the keyword _Static_assert. Example #include <assert.h> int main(void) { static_assert(2 + 2 == 4, "2+2 isn't 4"); // well-formed static_assert(sizeof(int) < sizeof(char), "this program requires that int is less than char"); // compile-time error } References C11 standard (ISO/IEC 9899:2011): 7.2/3 Diagnostics <assert.h>

kill_dependency

Defined in header <stdatomic.h> A kill_dependency(A y); (since C11) Informs the compiler that the dependency tree started by an memory_order_consume atomic load operation does not extend past the return value of kill_dependency; that is, the argument does not carry a dependency into the return value. The function is implemented as a macro. A is the type of y. Parameters y - the expression whose return value is to be removed from a dependency tree Return value

localeconv

Defined in header <locale.h> lconv* localeconv(); The localeconv function obtains a pointer to a static object of type lconv, which represents numeric and monetary formatting rules of the current C locale. Parameters (none). Return value pointer to the current lconv object. Notes Modifying the object references through the returned pointer is undefined behavior. localeconv modifies a static object, calling it from different threads without synchronization is undefi

max_align_t

Defined in header <stddef.h> typedef /*implementation-defined*/ max_align_t; (since C11) max_align_t is a type whose alignment requirement is at least as strict (as large) as that of every scalar type. Notes Pointers returned by allocation functions such as malloc are suitably aligned for any object, which means they are aligned at least as strict as max_align_t. max_align_t is usually synonymous with the largest scalar type, which is long double on most platforms, and i

static assert declaration

Syntax _Static_assert ( expression , message ) (since C11) expression - any integer constant expression message - any string literal This keyword is also available as convenience macro static_assert, available in the header <assert.h>. Explanation The constant expression is evaluated at compile time and compared to zero. If it compares equal to zero, a compile-time error occurs and the compiler must display message as part of the error message (except that char