在 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/