在C项目中,在某些地方,我想编译不同的代码,具体取决于编译是否发生在x64
。当然,CPP宏是要走的路。
但是,在此页面上(应该是权威参考),没有专门针对 x64 的预定义宏。
出于好奇,我错过了什么吗?
我知道我可以轻松解决实际问题:
首先,根据上面的参考,如果我想坚持使用预定义的宏,我可以做这样的事情:
#if defined (_M_AMD64) && (_M_AMD64 == 100) && !defined (_M_ARM64EC)
....
#endif
前两个条件确保我们为x64
或arm64ec
编译,第三个条件确保我们不为arm64ec
编译,这应该确保我们为x64
编译。
其次,我可以在 x64 配置的项目设置中定义自己的宏,并使用它而不是预定义的宏:
#ifdef MY_OWN_X64_FLAG
...
#endif
虽然它们解决了问题,但这两种方法都不直观和优雅。真的没有预定义的宏可以用来测试x64
只有一个简单的#ifdef
吗?
我错过了什么吗?
不。
真的没有预定义的宏可以用来测试x6 #ifdef 4吗?
是的,根据您自己的研究和链接的文档,实际上没有预定义的宏可以通过该编译器上的一个简单 #ifdef 来测试x86_64。