Provides a description of the current platform in lurid detail so that common
code never needs to actually know what the current operating system and
architecture are.

It is both very pragmatic and canonical in that if any application code finds
itself needing to make a platform decision, it should always define a Starboard
Configuration feature instead. This implies the continued existence of very
narrowly-defined configuration features, but it retains porting control in
Starboard.

## Macros

### SB_ALIGNAS(byte_alignment)

Specifies the alignment for a class, struct, union, enum, class/struct field, or
stack variable.

### SB_ALIGNOF(type)

Returns the alignment required for any instance of the type indicated by `type`.

### SB_ARRAY_SIZE(array)

A constant expression that evaluates to the size_t size of a statically-sized
array.

### SB_ARRAY_SIZE_INT(array)

A constant expression that evaluates to the int size of a statically-sized
array.

### SB_CAN(SB_FEATURE)

Determines a compile-time capability of the system.

### SB_COMPILE_ASSERT(expr, msg)

> [!WARNING]
> **Deprecated:** Use C++17 static_assert instead. Will cause a compiler error with `msg` if `expr` is false. `msg` must be a valid identifier, and must be a unique type in the scope of the declaration.

### SB_DEPRECATED(FUNC)

SB_DEPRECATED(int Foo(int bar)); Annotates the function as deprecated, which
will trigger a compiler warning when referenced.

### SB_DEPRECATED_EXTERNAL(FUNC)

SB_DEPRECATED_EXTERNAL(...) annotates the function as deprecated for external
clients, but not deprecated for starboard.

### SB_EXPORT_PLATFORM

SB_C_FORCE_INLINE annotation for forcing a C function to be inlined.
SB_EXPORT_PLATFORM annotates symbols as exported from shared libraries.

### SB_FUNCTION

Whether we use **PRETTY_FUNCTION** or **FUNCTION** for logging.

### SB_HAS(SB_FEATURE)

Determines at compile-time whether this platform has a standard feature or
header available.

### SB_HAS_QUIRK(SB_FEATURE)

Determines at compile-time whether this platform has a quirk.

### SB_IMPORT_PLATFORM

SB_IMPORT_PLATFORM annotates symbols as imported from shared libraries.

### SB_INT64_C(x)

Declare numeric literals of signed 64-bit type.

### SB_IS(SB_FEATURE)

Determines at compile-time an inherent aspect of this platform.

### SB_MAXIMUM_API_VERSION

The maximum Starboard API version supported.

### SB_MINIMUM_API_VERSION

The minimum Starboard API version supported.

### SB_NORETURN

Macro to annotate a function as noreturn, which signals to the compiler that the
function cannot return.

### SB_PRINTF_FORMAT(format_param, dots_param)

Include the platform-specific configuration. This macro is set by GN in
starboard/build/config/BUILD.gn and passed in on the command line for all
targets and all configurations. Tells the compiler a function is using a
printf-style format string. `format_param` is the one-based index of the format
string parameter; `dots_param` is the one-based index of the "..." parameter.
For v\*printf functions (which take a va_list), pass 0 for dots_param. (This is
undocumented but matches what the system C headers do.) (Partially taken from
base/compiler_specific.h)

### SB_SIZE_OF(DATATYPE)

Determines at compile-time the size of a data type, or 0 if the data type that
was specified was invalid.

### SB_UINT64_C(x)

Declare numeric literals of unsigned 64-bit type.

### SB_UNREFERENCED_PARAMETER(x)

> [!WARNING]
> **Deprecated:** Per the Google C++ Style Guide, comment out unused parameter names (e.g., `void* /*context*/` or `Type /*param_name*/`), or use `[[maybe_unused]]` if conditionally unused. Trivially references a parameter that is otherwise unreferenced, preventing a compiler warning on some platforms.

### SB_WARN_UNUSED_RESULT

Causes the annotated (at the end) function to generate a warning if the result
is not accessed.