获取包含头文件中声明的实体定义的源文件名?

时间:2015-05-10 12:27:53

标签: c++ c gcc

我有2个源文件:test.cpp and func.cpp 和1个头文件:func.h

这些文件的内容如下:

1。 test.cpp

#include "func.h"

int main() {
 ...
 func();
 ...
}

2。 func.cpp

#include "func.h"

void func() {
 //func() definition
}

=====================

  1. func.h
  2. =====================

    #include <iostream>
    using namespace std;
    
    void func(); /* func() declaration */
    

    =====================

    问题: 问题是找出源文件名,其中包含头文件中未定义实体的定义。 对于上面提到的例子:我需要找到包含函数“func()”定义的源文件。

    已采取的方法,但没有找到所需的结果: 我尝试使用“makedepend”和“gcc -MM <source file names>”来获取包含头文件中未定义实体定义的源文件,但它只给出了一条规则,显示了直接或间接包含的头文件由源文件。

    gcc -M test.cpp func.cpp的输出如下:

    test.o:test.cpp func.h
    func.o:func.cpp func.h
    

    我需要获得表单的输出:

    test.o:test.cpp func.h func.cpp
    

    任何人都可以请,让我知道解决这个问题的方法。如何获取源文件名,它为我提供了包含头文件中未定义实体的定义 提前致谢。

1 个答案:

答案 0 :(得分:0)

  

我需要定义未定义实体的源文件

使用ctags一次;例如:ctags test.cpp func.cpp func.hctags *.cpp *.h

然后找出func的定义源文件,做e。 G。 grep '^func\>' tags

func    func.cpp        /^void func() {$/;"     f