This module defines a toolchain abstraction layer through macros.

Macros

#define OT_MUST_USE_RESULT
Compiler-specific indication that a class or enum must be used when it is the return value of a function.
#define OT_TOOL_PACKED_BEGIN
Compiler-specific indication that a class or struct must be byte packed.
#define OT_TOOL_PACKED_FIELD
Indicate to the compiler a nested struct or union to be packed within byte packed class or struct.
#define OT_TOOL_WEAK
Compiler-specific weak symbol modifier.
#define OT_UNUSED_VARIABLE (VARIABLE)
Suppress unused variable warning in specific toolchains.
#define OT_UNREACHABLE_CODE (CODE) CODE
Suppress Unreachable code warning in specific toolchains.
#define OT_APPLE_IGNORE_GNU_FOLDING_CONSTANT (...) __VA_ARGS__

Detailed Description

This module defines a toolchain abstraction layer through macros.

Usage:

typedef
struct
{
char mField1;
union
{
char mField2;
long mField3;
} OT_TOOL_PACKED_END packed_struct_t;

Macro Definition Documentation

OT_MUST_USE_RESULT

#define OT_MUST_USE_RESULT

Compiler-specific indication that a class or enum must be used when it is the return value of a function.

Note
This is currently only available with clang (C++17 implements it as attribute [[nodiscard]]).
To suppress the 'unused-result' warning/error, please use the '-Wno-unused-result' compiler option.

OT_UNUSED_VARIABLE

#define OT_UNUSED_VARIABLE ( VARIABLE )
Value:
do \
{ \
(void)(VARIABLE); \
} while ( false )

Suppress unused variable warning in specific toolchains.