2015-10-15 71 views
1

编辑:哈哈,搜索条件是一个奇怪的事情。实际上我只好用我得到的答案作为搜索的术语最后找到this question。本着StackOverflow的精神,我会投票结束我自己的问题作为重复而不是删除它,以防它作为 其他人的着陆点。用宏确定GCC编译器

我正在编写几个函数,它们使用的是asm,但我只希望它们在使用可与NASM一起工作的编译器编译时运行。 (我在C++ 11,顺便说一句。)

我有点新的asm整个概念,但是这是我我知道:

  • 海湾合作委员会及其“亲戚”(MinGW,TDM-GCC)使用NASM,这正是我正在写的功能。因为...
  • X86/X64汇编器由编译器实现的内容决定。

上面的假设是正确的,我可以使用什么宏来确保当且仅当我使用GCC(或类似)的编译器或编译器,使用了我写的函数定义NASM?(该#ELSE将是该功能的可使用的虚设版本,以确保与其他编译器一般兼容性。)

我知道这种涉及确定操作系统(如#IFDEF _WIN32)唯一宏,但该宏会如果在Windows上使用TDM-GCC或MinGW进行编译的情况下使用不当。

注意:如果有人想知道,有问题的功能基本上是 “有用,但不重要”的效用函数。我们没有任何计划用非GCC编译器编译 ,但它是开源代码,所以我们希望 能够体贴其他。

回答

2

您可以使用__GNUC__宏来识别GCC(以及一些主要兼容的编译器,如Clang和Intel的C++编译器)。

MinGW(任何版本)可以检查__MINGW32__和/或__MINGW64__

+0

太棒了。那么,我也会承认'TDM-GCC'和'MinGW'。 – CodeMouse92

+0

哈哈,傻我,我终于找到了我自己的问题的副本。尽管如此,我会尽快接受你的回答。谢谢! – CodeMouse92