列出在标题中声明但在源文件中缺少的所有函数?

时间:2015-01-07 11:43:50

标签: c header-files static-analysis

问题

是否有一些短路/静态分析器对函数发出警告/错误,这些函数在头文件中声明但未在相应的源文件中实现?

假设我们有以下标题(保护省略):

/* example.h */
int doSomething(int i);
double doSomethingElse(double d);

以下来源:

/* example.c */
#require "example.h"

int doSomething(int i) {
  return i + 1;
}

那么是否有一些工具可以告诉我doSomethingElse()中缺少example.c

为什么要问?

在练习中,我们得到了一些带有完全fletched界面的头文件,以及部分准备好的源文件,其中一些函数完全提供,一些函数部分提供,一些函数丢失。

对于实际运行和编译此程序,只需完成部分提供的功能,但仍然在标题中定义的接口与源文件中现在提供的函数之间存在一些差异。

我可以手动浏览所有头/源对并实现缺少的功能,但是有一些自动生成的todolist会很高兴。

1 个答案:

答案 0 :(得分:0)

我只是使用grep等:

grep ');' foo.h | tr -d ';' | while read decl
do
    if ! grep -q "$decl" foo.c
    then
        echo "not found: $decl"
    fi
done

不,这并不完美,但如果您的用例与您概述的一样简单,它可能会有效。