Keywords
https://en.cppreference.com/w/c/keyword
Storage-class specifiers
auto: automatic duration and no linkage
register: automatic duration and no linkage; address of this variable cannot be taken
static: static duration and internal linkage (unless at block scope) static duration and internal linkage, a function declared as static at the top level of a source file (outside any class definitions) – is only visible throughout that file (”file scope”, also known as “internal linkage”). A variable declared as static at the top level of a source file (outside any function definitions) is only visible throughout that file
extern: static duration and external linkage (unless already declared internal)
Static storage and external linkage
If no storage-class specifier is provided, the defaults are:
extern for all functions
extern for objects at file scope
auto for objects at block scope
C Type qualifier
volatile: disable optimization: within a single thread of execution, a volatile access cannot be optimized out or reordered relative to another visible side effect that is separated by a sequence point from the volatile access.
const: Objects declared with const-qualified types may be placed in read-only memory by the compiler, and if the address of a const object is never taken in a program, it may not be stored at all.
restrict: applies Only a pointer to an object type or an array thereof (since C23). Promotes optimization by retricting modification of memory through multiple pointers
Other keyords
inline: replace function call with its body for code optimization