banner
cells

cells

为美好的世界献上 bug

预定义宏

预定义宏是由编译器提供的宏定义。

编译器相关的宏#

不同的编译器提供自己的一套预定义宏。

  • GCC
    • __GNUC__:GCC 的主版本号。
    • __GNUC_MINOR__:GCC 的次版本号。
    • __GNUC_PATCHLEVEL__:GCC 的补丁级别号。
  • Clang
    • __clang__:使用 Clang 编译器时被定义。
    • __clang_major__:Clang 的主版本号
    • __clang_minor__:Clang 的次版本号
    • __clang_patchlevel__:Clang 的补丁级别号
  • MSVC
    • _MSC_VER:MSVC 的版本号。
    • _MSC_BUILD:MSVC 构建号

操作系统相关的宏#

  • Windows
    • _WIN32:在 32 位和 64 位 Windows 系统上都会被定义。
    • _WIN64:仅在 64 位 Windows 系统上被定义。
  • Unix 或 类 Unix
    • __unix__:在 Unix 和类 Unix 系统(如 Linux)上被定义。
    • __APPLE__:在 macOS 和 iOS 系统上被定义。
    • __linux__:在 Linux 系统上被定义。
    • __FreeBSD__:在 FreeBSD 系统上被定义。
    • __OpenBSD__:在 OpenBSD 系统上被定义。
    • __NetBSD__:在 NetBSD 系统上被定义。
    • __DragonFly__:在 DragonFly BSD 系统上被定义。
    • __sun:在 Solaris 系统上被定义。
    • __hpux:在 HP-UX 系统上被定义。
    • __sgi:在 IRIX 系统上被定义。
    • __AIX:在 AIX 系统上被定义。
  • 其他
    • __ANDROID__:在 Android 平台上被定义。
    • __CYGWIN__:在 Cygwin 环境下被定义。

标准库相关的宏#

  • __cplusplus:用于指示编译器是否正在编译 C++ 代码。如果编译器正在编译 C++ 代码,则该宏的值为一个非零值;否则,该宏未定义。
  • __STDC__:用于指示编译器是否遵循 C 标准。如果编译器遵循 C 标准,则该宏的值为 1;否则,该宏未定义。
  • __STDC_VERSION_:C 标准的版本。

硬件架构相关的宏#

  • __arm__:arm 架构
  • __x86_64__:x86_64 架构

如有纰漏,欢迎指正

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。