Defines |
| #define | P99_CONST_FUNCTION |
| | On architectures that support this, assert that a function is "const", i.e only depends on parameters and global variables.
|
| #define | P99_DEPRECATED(...) /*! \deprecated __VA_ARGS__ */ |
| | Mark the conditional expression as being unlikely.
|
| #define | P99_EXPECT(EXP, VAL) (EXP) |
| | Provide a compiler hint concerning the likelihood of a certain value in an expression EXP.
|
| #define | p99_has_attribute(X) (__has_attribute(X) || p00_has_attribute_ ## X) |
| #define | p99_has_builtin(X) (__has_builtin(X) || p00_has_builtin_ ## X) |
| #define | p99_has_extension(X) (__has_extension(X) || p00_has_extension_ ## X) |
| #define | p99_has_feature(X) (__has_feature(X) || p00_has_feature_ ## X) |
| #define | P99_IF_COMPILER(COMP,...) P00_COMPILER_PRAGMA_ ## COMP(P99_STRINGIFY(__VA_ARGS__)) |
| | Issue the pragma that is given as a supplementary argument iff the actual compiler is COMP.
|
| #define | p99_inline static inline |
| | Try to force a function always to be inlined.
|
| #define | P99_MACRO_END(...) P00_HARMLESS_DECLARATION |
| | A meta macro that forces the addition of a semicolon after a call to the macro that it terminates.
|
| #define | P99_PARALLEL_PRAGMA |
| | A token sequence that can be used in a #pragma directive to indicate a parallel for-loop.
|
| #define | P99_PURE_FUNCTION |
| | On architectures that support this, assert that a function is "pure", i.e only depends on parameters and global variables.
|
| #define | P99_SETJMP_INLINE(NAME) P99_WEAK(NAME) |
| #define | P99_STRINGIFY(...) P00_STRINGIFY(__VA_ARGS__) |
| | Transform the argument list into one string.
|
| #define | P99_VECTOR(T, NAME, N) _Alignas(sizeof(T)*(N)) T NAME[N] |
| | A wrapper for vector type extensions.
|
| #define | P99_WARN_UNUSED_RESULT |
| | On architectures that support this, warn if the result of a function is not used.
|
| #define | P99_WEAK(...) P99_IF_LT(P99_NARG(__VA_ARGS__), 2)(P00_WEAK1(__VA_ARGS__))(P00_WEAK2(__VA_ARGS__)) |
| | Declare a symbol to be weak such that it can be provided several times without error.
|
| #define | static_inline static inline |