2014-03-02 83 views
1

我正在爲SDL/OpenGL程序構建makefile。在查看SDL2.0示例的Makefile時,我會看到編譯器標誌,例如DHAVE_OPENGL和D_REENTRANT。在gcc的man手冊中沒有任何地方可以找到這些標誌中的任何一個的信息。在互聯網/我的系統上,我可以找到有關gcc支持的所有標誌的文檔?編譯器gcc編譯器標誌的文檔?

回答

2

-D選項用於不定義特定的編譯器標誌,但是用於pass macro definitions to the preprocessor

確實-DHAVE_OPENGL就像在您的源代碼中有#define HAVE_OPENGL 1。所以它們與編譯器本身無關,只是與編譯的代碼有關。

Here你可以找到在任何情況下GCC選項的綜合文檔。

1

那些不是編譯器標記本身-D是一個編譯器標誌,但接下來是預處理器定義。你不會找到什麼那些在編譯文檔意味着任何信息,因爲它會影響實際代碼您正在構建的行爲(例如,其在編譯過程中實際包含的代碼的部分)。

因此,不幸的,只有這樣,你纔會知道什麼定義這些預處理器令牌會做的是,如果你研究你編譯源代碼,或者如果庫您正在使用的文件他們。然而

一般來說,HAVE_OPENGL讓SDL知道編譯GL相關的代碼。

重入是用於線程安全的,儘管_REENTRANT不是標準的預處理器定義(雖然通常用於某些C stdlib實現),但假設它會導致您的軟件選擇重定向,儘可能進入功能的版本。