2015-10-15 72 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