c++ - 确定确切的头文件

标签 c++ c unix ksh

我在我的源文件 (*.c) 中使用了一些宏。

在编译期间或从库中是否有任何方法可以识别从中解析此特定宏的确切头文件?

问题是我们在某个头文件中使用宏#defined to 10,但代码中收到的值为 4。因此,我们不想去检查所有的 dep 文件,而是想知道是否有一些直接的方法来识别从中解析宏的源。

最佳答案

如果您只是在文件上运行 cpp(C 预处理器),输出将包含形式为#line 的指令

#line 45 "silly-file-with-macros.h"

让编译器说明所有内容的来源。所以一种方法是使用

 cpp my-file.c | more

并寻找 #line 指令。

根据您的编译器,您可以使用的另一个技巧是将宏重新定义为其他内容,编译器会发出类似这样的警告

test-eof.c:5:1: warning: "FRED" redefined
test-eof.c:3:1: warning: this is the location of the previous definition

(这是来自 gcc),它应该告诉您先前定义宏的位置。但想想看,您怎么还没有收到警告?

另一个想法是使用 makedepend 获取所有包含文件的列表,然后 grep 它们以查找其中的 #define 行。

关于c++ - 确定确切的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601008/

相关文章:

c++ - 如何在 C++ 中隐藏我的 AWS S3 访问 key 和 secret ?

c++ tcp 多线程客户端/服务器 - 如何与线程 sockethandler 通信?

c - 如何在不崩溃 c 中的进程的情况下生成核心转储?

linux - 将 file 的 cat 输出重定向到同一文件

c - 使用系统调用读取 "space"[在 Unix 中使用 C]

c++ - 在 C++ 类中嵌入的其他函数中使用 main 函数的结果

c++ - 在文本文件中搜索某个单词 C++

Windows下的C编程

c - 如何用 C(在 Linux 中)编写定时器?

python - 如何重新启动 python 脚本,无论它们退出或崩溃的原因如何?