【发布时间】:2016-06-17 08:37:38
【问题描述】:
让我们看下面的代码,如果定义了宏 HAVE_SYS_SELECT_H,那么它们包含头文件。我需要知道宏在哪里?那就是在哪个头文件中定义了宏。
在编译源代码时有什么选择吗?
有没有办法找到头文件?另外我想知道编译时是否定义了该宏
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
【问题讨论】:
-
你可以使用ctags。
-
这不是一个真正的答案,除了一点点:大多数
HAVE_XXX将来自config.h,由 autoconfig 自动生成。 -
搜索项目文件夹中的所有头文件。很可能它出现在自动生成的头文件中,这意味着头文件可能还不存在,并且带有宏的头文件将由
configure脚本(或类似脚本)创建。 -
您能否告诉我们为什么您“需要知道宏在哪里”?您要解决的实际问题是什么? Related reading about the XY problem.
-
@Jaochim 那我怎么知道这个宏是否已经定义了?我也不能使用 printf 语句来检查这个宏是否被定义,因为在主函数之前只有他们声明了标题。
标签: c c-preprocessor open-source header-files ctags