我想使用基于gcc开关的#if指令交叉编译特定的32位和64位代码。
我是否可以使用GCC设置的宏而不是使用-D开关设置宏?
我可以以某种方式获取gcc命令选项中使用的开关,以便在预处理器阶段测试它们吗?
到目前为止,我发现-m64在我的64位计算机上定义了
__x86_64__
而-m32取消定义
__i386__ __i486__ __i586__ __i686__
答案 0 :(得分:2)
您可以使用INT_MAX
中的<limits.h>
值。这是C,因此独立于编译器。
您还可以根据编译器选项检查https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html以获得一些其他预定义宏。
一般来说,最近,建议编写可移植的代码,同时使用if
来测试仅在特定体系结构上才有效的条件。优化器将删除不需要的分支。