#error directive

Shows the given error message and renders the program ill-formed. Syntax #error error_message Explanation After encountering the #error directive, an implementation displays the diagnostic message error_message and renders the program ill-formed (the compilation stops). error_message can consist of several words not necessarily in quotes. References C11 standard (ISO/IEC 9899:2011): 6.10.5 Error directive (p: 174) C99 standard (ISO/IEC 9899:1999): 6.10.5 Error directive (p

FE_DFL_ENV

Defined in header <<fenv.h>> #define FE_DFL_ENV /*implementation defined*/ (since C99) The macro constant FE_DFL_ENV expands to an expression of type const fenv_t*, which points to a full copy of the default floating-point environment, that is, the environment as loaded at program startup. Additional macros that begin with FE_ followed by uppercase letters, and have the type const fenv_t*, may be supported by an implementation. Example #include <stdio.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

File scope

If the declarator or type specifier that declares the identifier appears outside of any block or list of parameters, the identifier has file scope, which terminates at the end of the translation unit. So, placement of an identifier's declaration (in a declarator or type specifier) outside any block or list of parameters means that the identifier has file scope. File scope of an identifier extends from the declaration to the end of the translation unit in which the declaration appears. Example

time_t

Defined in header <time.h> typedef /* unspecified */ time_t; Arithmetic (until C11) Real (since C11) type capable of representing times. Although not defined by the C standard, this is almost always an integral value holding the number of seconds (not counting leap seconds) since 00:00, Jan 1 1970 UTC, corresponding to POSIX time. Notes The standard uses the term calendar time when referring to a value of type time_t. Example Show the start of the epoch. #include &l

Date and time utilities

Functions Time manipulation Defined in header <time.h> difftime computes the difference between times (function) time returns the current calendar time of the system as time since epoch (function) clock returns raw processor clock time since the program is started (function) timespec_get (since C11) returns the calendar time based on a given time base (function) Format conversions Defined in header <time.h> asctimeasctime_s (C11) conv

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>

va_end

Defined in header <stdarg.h> void va_end( va_list ap ); The va_end macro performs cleanup for an ap object initialized by a call to va_start or va_copy. va_end may modify ap so that it is no longer usable. If there is no corresponding call to va_start or va_copy, or if va_end is not called before a function that calls va_start or va_copy returns, the behavior is undefined. Parameters ap - an instance of the va_list type to clean up Expanded value (none). Ref

va_copy

Defined in header <stdarg.h> void va_copy( va_list dest, va_list src ); (since C99) The va_copy macro copies src to dest. va_end should be called on dest before the function returns or any subsequent re-initialization of dest (via calls to va_start or va_copy). Parameters dest - an instance of the va_list type to initialize src - the source va_list that will be used to initialize dest Expanded value (none). Example #include <stdio.h> #include

islessequal

Defined in header <math.h> #define islessequal(x, y) /* implementation defined */ (since C99) Determines if the floating point number x is less than or equal to the floating-point number y, without setting floating-point exceptions. Parameters x - floating point value y - floating point value Return value Nonzero integral value if x <= y, ​0​ otherwise. Notes The built-in operator<= for floating-point numbers may raise FE_INVALID if one or both