Definitions

The Definitions header provides platform and compiler detection macros used throughout the library. These macros enable conditional compilation for different operating systems, architectures, and compilers.

Platform Detection

The following macros are defined automatically:

ERBSLAND_OS_WINDOWS

Defined on Windows platforms (_WIN32 or _WIN64).

ERBSLAND_OS_MACOS

Defined on Apple platforms.

ERBSLAND_OS_LINUX

Defined on Linux platforms.

Short namespace aliases EL_OS_WINDOWS, EL_OS_MACOS, and EL_OS_LINUX are also provided when the short namespace is enabled.

Architecture Detection

ERBSLAND_ARCH_64

Defined on 64-bit architectures (_WIN64, __x86_64__, or __ppc64__).

ERBSLAND_ARCH_32

Defined on 32-bit architectures.

Compiler Detection

ERBSLAND_COMPILER_CLANG

Defined when compiling with Clang.

ERBSLAND_COMPILER_GCC

Defined when compiling with GCC or compatible compilers.

ERBSLAND_COMPILER_MSVC

Defined when compiling with Microsoft Visual C++.

wchar_t Size

ERBSLAND_WCHAR_16BIT

Defined on Windows, where wchar_t is 16 bits.

ERBSLAND_WCHAR_32BIT

Defined on all other platforms, where wchar_t is 32 bits.

Short Namespace

The header also sets up the el short namespace alias for erbsland. This can be disabled with ERBSLAND_NO_SHORT_NAMESPACE or customized with ERBSLAND_SHORT_NAMESPACE to use a different namespace name.

Interface

Defines

ERBSLAND_ARCH_32
ERBSLAND_WCHAR_32BIT