我需要设置 #ifdef
- 检查条件编译。我想自动化该过程,但无法指定目标操作系统/机器。有什么方法可以让预编译器判断它是在 32 位还是 64 位上运行吗?
(解释)我需要定义一个 64 位大小的类型。在 64 位操作系统上它是一个 long,在大多数其他操作系统上它是一个 long long。
I found 这个答案 https://stackoverflow.com/questions/735647/ifdef-for-32-bit-platform/735656#735656- 这是正确的方法吗?
[编辑]编译器宏的方便参考 http://sourceforge.net/apps/mediawiki/predef/index.php?title=Main_Page
您可以可靠地执行的唯一编译检查是sizeof(void*) == 8
,对于 x64 为 true,对于 x86 为 false。这是一个 constexpr,您可以将其传递给模板,但您可能会忘记使用 ifdef。没有独立于平台的方法来了解目标架构的地址大小(在预处理时),您需要向 IDE 索要一种方法。该标准甚至没有地址大小的概念。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)