编辑:哈哈,搜索条件很奇怪。我实际上不得不使用我得到的答案作为最终找到this question的搜索。本着StackOverflow的精神,我会投票决定关闭我的 将自己的问题视为重复而不是删除它,以防它作为登陆点 其他人。
我正在编写几个使用asm
的函数,但我只希望它们在使用可以与NASM一起使用的编译器进行编译时才能运行。 (顺便说一下,我在C ++ 11上。)
我对asm
的整个概念有点新意,但这是我认为我知道的:
假设上面的内容是正确的,当我使用GCC(或类似)编译器或使用NASM的编译器时,我可以使用哪个宏来确保我正在编写的函数被定义?(#ELSE
将是函数的可用虚拟版本,以确保与其他编译器的一般兼容性。)
我所知道的这类宏只涉及确定操作系统(例如#IFDEF _WIN32
),但在我使用Windows上的TDM-GCC或MinGW进行编译的情况下,该宏会被错误地使用
注意:如果有人想知道,有问题的功能基本上是 “有用但不重要”的实用功能。我们没有任何计划 用非GCC编译器编译,但它是开源代码,所以我们想要 要体谅他人。
答案 0 :(得分:2)
您可以使用__GNUC__
宏来识别GCC(以及一些主要兼容的编译器,如Clang和Intel的C ++编译器)。
MinGW(任何版本)可以检查__MINGW32__
和/或__MINGW64__
。