2014-01-05 25 views
0

在Doom 3源代碼中,使用了ID_INLINE宏而不是內聯,它被聲明爲#define ID_INLINE inline。有什麼理由使用這個宏而不是簡單的內聯?爲什麼在Doom源代碼中有#define ID_INLINE內聯定義?

+1

因爲這樣你可以取消內聯的所有改變的一行代碼的功能? –

+0

@OliCharlesworth您的評論似乎對我的問題非常好。 –

回答

4

出於同樣的原因,許多其他軟件包使用「內聯宏」。它有兩個目的:

  1. 它爲程序員提供了一個簡單的地方爲「關閉所有內聯」(這是非常有用的,有時調試東西的時候) - 通過做#undef ID_INLINE其次,你能做到「每個文件」 #define ID_INLINE - 或更改整體宏以影響整個項目。
  2. 一些(舊)編譯器不支持標準inline關鍵字,或者您可能需要使用特殊的魔術來說服編譯器內聯函數。因此,使用「內聯宏」可以在整個項目中對其進行更改(至少如果程序員遵循編碼標準)。

隨着現代編譯器,前者肯定是主要觀點。

0

它的唯一原因是有辦法重新定義該宏爲以下,可能對調試用途:

#define ID_INLINE 
相關問題