makefile中-DHAVE_CONFIG_H的含义

Ope*_*way 12 makefile

我开始学习makefile.看看输出我看到很多次出现:

g++ -DHAVE_CONFIG_H -I ...
Run Code Online (Sandbox Code Playgroud)

到底是-DHAVE_CONFIG_H什么?这个编译选项的功能是什么?

pax*_*blo 21

所有这一切-DHAVE_CONFIG_H确实是定义预处理器令牌HAVE_CONFIG_H完全一样,如果你有#define HAVE_CONFIG_H正确的在每个源文件的开始.

至于它用于什么,这完全取决于你的源文件的其余部分(以及它包含的所有内容).那就是你应该寻找的效果.

看起来像它可能意味着一个头文件config.h可用,并应包括,在这种情况下,你可能会发现下面的顺序在某处你的源文件:

#ifdef HAVE_CONFIG_H
    #include "config.h"
#endif
Run Code Online (Sandbox Code Playgroud)

当你说它可用时,它将包含头文件.然而,这是我的假设,绝不是确切的效果,正是将使用这样的预处理器符号.

  • **AutoConf的** [AC_CONFIG_HEADERS宏](https://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Configuration-Headers.html)可以设置为生成`config.h`文件并定义`HAVE_CONFIG_H`。 (4认同)