rint

Defined in header <math.h> float rintf( float arg ); (1) (since C99) double rint( double arg ); (2) (since C99) long double rintl( long double arg ); (3) (since C99) Defined in header <tgmath.h> #define rint( arg ) (4) (since C99) Defined in header <math.h> long lrintf( float arg ); (5) (since C99) long lrint( double arg ); (6) (since C99) long lrintl( long double arg ); (7) (since C99) Defined in header <tgmat

Function declarations

A function declaration introduces an identifier that designates a function and, optionally, speicifies the types of the function parameters (the prototype). Function declarations (unlike definitions) may appear at block scope as well as file scope. Syntax In the declaration grammar of an function declaration, the type-specifier sequence, possibly modified by the declarator, designates the return type (which may be any type other than array or function type), and the declarator has one of two

vwscanf

Defined in header <wchar.h> int vwscanf( const wchar_t* format, va_list vlist ); (1) (since C99) int vfwscanf( FILE *stream, const wchar_t *format, va_list vlist ); (2) (since C99) int vswscanf( const wchar_t* buffer, const wchar_t *format, va_list vlist ); (3) (since C99) int vwscanf_s( const wchar_t *restrict format, va_list vlist ); (4) (since C11) int vfwscanf_s( FILE * restrict stream, const wchar_t *restrict format, va_list vlist );

atomic_fetch_xor

Defined in header <stdatomic.h> C atomic_fetch_xor( volatile A* obj, M arg ); (1) (since C11) C atomic_fetch_xor_explicit( volatile A* obj, M arg, memory_order order ); (2) (since C11) Atomically replaces the value pointed by obj with the result of bitwise XOR between the old value of obj and arg, and returns the value obj held previously. The operation is read-modify-write operation. The first version orders memory accesses according to memory_order_seq_cst, the seco

#line directive

Changes the current line number and file name in the preprocessor. Syntax #line lineno (1) #line lineno "filename" (2) Explanation 1) Changes the current preprocessor line number to lineno. Occurrences of the macro __LINE__ beyond this point will expand to lineno plus the number of actual source code lines encountered since. 2) Also changes the current preprocessor file name to filename. Occurrences of the macro __FILE__ beyond this point will produce filename. Any preproc

isblank

Defined in header <ctype.h> int isblank( int ch ); (since C99) Checks if the given character is a blank character in the current C locale. In the default C locale, only space (0x20) and horizontal tab (0x09) are classified as blank. The behavior is undefined if the value of ch is not representable as unsigned char and is not equal to EOF. Parameters ch - character to classify Return value Non-zero value if the character is a blank character, zero otherwise.

ferror

Defined in header <stdio.h> int ferror( FILE *stream ); Checks the given stream for errors. Parameters stream - the file stream to check Return value Nonzero value if the file stream has errors occurred, ​0​ otherwise. Example #include <stdio.h> #include <stdlib.h> int main(void) { FILE* fp = fopen("test.txt", "r"); if(!fp) { perror("File opening failed"); return EXIT_FAILURE; } int c; // note: int, not char

_Imaginary_I

Defined in header <complex.h> #define _Imaginary_I /* unspecified */ (since C99) The _Imaginary_I macro expands to a value of type const float _Imaginary with the value of the imaginary unit. As with any pure imaginary number support in C, this macro is only defined if the imaginary numbers are supported. A compiler that defines __STDC_IEC_559_COMPLEX__ is not required to support imaginary numbers. POSIX recommends checking if the macro _Imaginary_I is defined to identify

atomic_signal_fence

Defined in header <stdatomic.h> void atomic_signal_fence( memory_order order ); (since C11) Establishes memory synchronization ordering of non-atomic and relaxed atomic accesses, as instructed by order, between a thread and a signal handler executed on the same thread. This is equivalent to std::atomic_thread_fence, except no CPU instructions for memory ordering are issued. Only reordering of the instructions by the compiler is suppressed as order instructs. For example, wr

SIG_ERR

Defined in header <signal.h> #define SIG_ERR /* implementation defined */ A value of type void (*)(int). When returned by signal, indicates that an error has occurred. Example #include <stdio.h> #include <stdlib.h> #include <signal.h> void signal_handler(int signal) { printf("Received signal %d\n", signal); } int main(void) { /* Install a signal handler. */ if (signal(SIGTERM, signal_handler) == SIG_ERR) { printf("Error whi