如何在C中找到在.h文件中声明的函数?

时间:2014-11-26 13:48:43

标签: c

我想找到一些在.h文件中声明的函数的具体定义。问题是我如何才能做到这一点?因为目录中有数百个.c文件。我尝试使用grep命令,它没有高效工作。还有其他方法吗?

我的.h文件:

248 #define EXPAND(a,b,c)a b

我使用vim,所以:

:tag EXPAND

E433:没有标签文件 E426:找不到标签 248等是行号。和433,426与EXPAND无关,一个是空行,另一个是评论部分。

EXPAND是一个宏?我认为这是一个函数,因为它出现在其他.c文件中,如:

u[EN] = EXPAND(v[VX]*v[VX], + v[VY]*v[VY], + v[VZ]*v[VZ])

@didierc是对的,我发现这是一个宏。我对C真的很绿。非常感谢@Basile Starynkevitch提供了追踪功能的方法,这是另一个问题。困惑的我

1 个答案:

答案 0 :(得分:4)

etagsemacs一起使用(或者ctags,例如,如果使用vi)。而不是grep考虑使用ack

详细了解linker(例如Levine's book Linkers & Loaders;详细信息是特定于操作系统的);在Linux上看binutils。请注意,extern适用于声明,而不适用于函数或变量名称的定义

不要忘记在ctagsetags编辑器中使用代码之前不时运行emacsvi命令。

关于宏:请理解C preprocessor是编译的第一阶段。阅读GNU cpp的文档。不要期望宏是功能,它们是文本设备!或许使用gcc -Wall -C -E foo.c > foo.i(还有gcc的更多选项,例如-I-D个)来获取源文件foo.i的预处理形式foo.c };用编辑器查看生成的foo.i内部。