c++ - 如何检测我是否正在为 C++ 中的 64 位架构进行编译

标签 c++ 64-bit c-preprocessor

在 C++ 函数中,如果要编译 64 位架构,我需要编译器选择不同的 block 。

我知道为 MSVC++ 和 g++ 执行此操作的方法,因此我将其发布为答案。但是我想知道是否有更好的方法(更优雅,适用于所有编译器/所有 64 位架构)。如果没有更好的方法,我应该寻找哪些其他预定义的宏才能与其他编译器/架构兼容?

最佳答案

在 C 和 C++ 中检测 32 位和 64 位构建的独立于体系结构的方法如下所示:

// C
#include <stdint.h>

// C++
#include <cstdint>

#if INTPTR_MAX == INT64_MAX
// 64-bit
#elif INTPTR_MAX == INT32_MAX
// 32-bit
#else
#error Unknown pointer size or missing size macros!
#endif

关于c++ - 如何检测我是否正在为 C++ 中的 64 位架构进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/163058/

相关文章:

c++ - 如何删除由指针数组组成的成员变量

C# - 如何在 Windows 64 位上获取程序文件 (x86)

c - 将宏定义为行号

c++ - 使用 boost metaparse 字符串解析包含的文件

c - 在 c 中的函数开始和结束处添加唯一代码

c++ - 如何正确地将转换构造函数从 std::queue 传递到底层 std::deque?

c++ - 未解析的外部符号 cvFindChessboardCorners()

c++ - MakeFile 中的 "undefined reference to"

iOS 64 位 @try {...} @catch {...} 不工作

windows - 在 cmake 中强制构建 x64 位