C99 Definition
NULL Pointer
C Programming/stdint.h
inttypes.h – fixed size integer types
stdint.h – integer types
Include
NULL | stddef.h |
size_t | stddef.h |
uint32_t | stdint.h |
stddef.h | NULL, size_t |
stdbool.h | bool, true, false |
stdint.h | uint32_t |
limits.h | INT_MIN, UINT_MAX |
inttypes.h | PRId32, PRIx32 |
Varianten der Programmiersprache C
Präprozessor
Stop on Preprocessor
Can gcc output C code after preprocessing?
$ gcc -E test.c
Concatenation
struct command { char *name; void (*function) (void); }; #define COMMAND(NAME) { #NAME, NAME ## _command } struct command commands[] = { COMMAND (quit), COMMAND (help), … }; /* === RESULT === */ struct command commands[] = { { "quit", quit_command }, { "help", help_command }, … };
Variadic macro __VA_ARGS__
Variadic Macros
Variadic macro
#define MYLOG(FormatLiteral, ...) \ fprintf (stderr, "%s(%u): " FormatLiteral "\n", \ __FILE__, __LINE__, __VA_ARGS__)
Structs
struct (C programming language)
Struct initialization
Designated Initializer
Designated Initializers
Why does C++11 not support designated initializer lists as C99?
/* Forward declare a type "point" to be a struct. */ typedef struct point point; /* Declare the struct with integer members x, y */ struct point { int x; int y; }; /* Define a variable p of type point, and initialize its first two members in place */ point p = { 1, 2 }; /* Define a variable p of type point, an set members using designated initializers*/ point p = { .y = 2, .x = 1 };