有没有一种标准方法可以在编译时确定系统是32位还是64位?

sla*_*ais 7 c++ compilation 32bit-64bit

我需要设置 #ifdef - 检查条件编译.我想自动化该过程但不能指定目标OS /机器.有没有一种方法可以解析预编译器是在32位还是64位上运行?

(解释)我需要定义一个64位大小的类型.在64位操作系统上它是一个很长的,在大多数情况下它是一个很长的.

我找到了这个答案 - 这是正确的方法吗?

[编辑] 编译器宏方便参考

Pup*_*ppy 10

您可以可靠地执行的唯一编译检查sizeof(void*) == 8对于x64为true,对于x86为false.这是一个constexpr,您可以将其传递给模板,但您可以忘记使用ifdef.没有与平台无关的方法来了解目标体系结构的地址大小(在预处理时),您需要向IDE询问一个.标准甚至没有地址大小的概念.