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_TOOL_PRINTF_STYLE_FORMAT_ARG_CHECK(aFmtIndex, aStartIndex)
 This macro specifies that a function or method takes printf style arguments and should be type-checked against a format string.
 
#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__
 
#define OT_FALL_THROUGH
 Suppress fall through warning in specific compiler.

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_FALL_THROUGH

#define OT_FALL_THROUGH
Value:
do \
{ \
} while (false) /* fallthrough */

Suppress fall through warning in specific compiler.

◆ 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_TOOL_PRINTF_STYLE_FORMAT_ARG_CHECK

#define OT_TOOL_PRINTF_STYLE_FORMAT_ARG_CHECK (   aFmtIndex,
  aStartIndex 
)

This macro specifies that a function or method takes printf style arguments and should be type-checked against a format string.

This macro must be added after the function/method declaration. For example:

void MyPrintf(void *aObject, const char *aFormat, ...) OT_TOOL_PRINTF_STYLE_FORMAT_ARG_CHECK(2, 3);

The two argument index values indicate format string and first argument to check against it. They start at index 1 for the first parameter in a function and at index 2 for the first parameter in a method.

Parameters
[in]aFmtIndexThe argument index of the format string.
[in]aStartIndexThe argument index of the first argument to check against the format string.

◆ OT_UNUSED_VARIABLE

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

Suppress unused variable warning in specific toolchains.