gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:46 25 4
gpt4 key购买 nike

我在我的源文件 (*.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com