如何生成c源文件相互包含的关系图

来源:百度知道 编辑:UC知道 时间:2024/06/24 14:49:43
从已有的源代码得到这个图
如果一个 a.cpp/a.h 需要 b.cpp/b.h(也就是说#include<b.h>) 那么在图中这两个元素之间就连线
然后形成一个层次的关系 能看出哪些文件是最底层的
请问如何做到 谢谢 如果能写出这样的程序也行

你是想开发一个类似的工具还是有应用需求?
如果是有这种应用需求的话,那就装一个source insight吧,网上可以下到破解版的。很不错的代码编辑工具。具有强大的关键字热链接功能(包括生成树状关系图)。
不过对中文支持功能不行!

(1) 建一个输入文件名 的数据文件,一个文件名一行,例如:
a
b
c
(2) 从上面的文件,依次读出文件名a,b,c,,打开文件a.cpp ....
(3) 用fgets 一行一行地 读 打开的 .cpp 文件内容, 一行内容放在 buff[] 里,
用 if ( 2 == sscanf(buff,"%s %s",.....) ){}
如果第一个字符串是 #include, 则分析第二个字符串,如果字符串
等于数据文件中(不包括自己)任何一个文件名加.h,则它与那个文件有关。一行一行地 读,就得到所有有关的 .h
读到EOF,关闭文件,读下一个.cpp
(4) 统计 各.cpp 的 各自的有关文件,就可以得到最底层(root层)。

你的最底层是什么意思?是不包含别的文件的?还是不被别的文件包含的?
不包含别的文件的很好看出来吧,没有#include的不就是。
不被别的文件包含的,理论上来说其文件名没有出现在任何文件的#include后面就是

用office 的 visual 可以画