2014-03-02 84 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实现),但假设它会导致您的软件选择重定向,尽可能进入功能的版本。