确定带有宏的 GCC 编译器

Determine GCC Compiler with Macro

本文关键字:GCC 编译器      更新时间:2023-10-16

编辑:哈哈,搜索词是一件奇怪的事情。实际上,我不得不使用我得到的答案作为搜索的术语,最终找到这个问题。本着StackOverflow的精神,我将投票关闭我的 将问题作为重复而不是删除它,以防它作为 别人。

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

我对asm的整个概念有点陌生,但这就是我认为我知道的:

    GCC
  • 及其"亲戚"(MinGW,TDM-GCC(使用NASM,这就是我编写函数的目的。
  • 所有英特尔和AMD处理器理论上都可以理解NASM,无论操作系统如何,因为...
  • X86/X64 汇编程序由编译器实现的内容决定。

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

我所知道的唯一此类宏与确定操作系统(例如#IFDEF _WIN32(有关,但是在我在Windows上使用TDM-GCC或MinGW进行编译的情况下,该宏会错误地使用。

注意:如果有人想知道,有问题的功能基本上是 "有用,但不重要"的实用程序。我们没有任何计划 使用非 GCC 编译器编译,但它是开源代码,所以我们希望 为他人着想。

您可以使用

__GNUC__宏来识别GCC(以及一些大多数兼容的编译器,如Clang和Intel的C++编译器(。

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