条件代码取决于gcc开关

时间:2018-02-28 01:33:07

标签: c gcc macros c-preprocessor

我想使用基于gcc开关的#if指令交叉编译特定的32位和64位代码。

我是否可以使用GCC设置的宏而不是使用-D开关设置宏?

我可以以某种方式获取gcc命令选项中使用的开关,以便在预处理器阶段测试它们吗?

到目前为止,我发现-m64在我的64位计算机上定义了

   __x86_64__

而-m32取消定义

   __i386__ __i486__ __i586__ __i686__

1 个答案:

答案 0 :(得分:2)

您可以使用INT_MAX中的<limits.h>值。这是C,因此独立于编译器。

您还可以根据编译器选项检查https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html以获得一些其他预定义宏。

一般来说,最近,建议编写可移植的代码,同时使用if来测试仅在特定体系结构上才有效的条件。优化器将删除不需要的分支。