c++ - 如何在 C++ 中查找函数的所有调用者?

标签 c++ c refactoring function

我正在用 C++ 重构一些代码,并且我想弃用一些旧方法。我目前查找所有方法的方法如下所示:

  1. 注释掉我正在工作的源文件中的原始方法。
  2. 尝试编译代码。
  3. 如果发现编译器错误,则记下该调用并尝试重新编译。
  4. 编译成功后,我找到了所有的调用。

这完全糟透了。我还尝试使用 grepping source 来获取函数调用的名称,但有时我会遇到具有不同参数的同名函数的问题,因此我的编译使 C++ 编译器为我解析名称。我找到了this question对于 C#,但我的代码库完全用 C++ 实现。

有没有更好的方法在 C++ 中找到类方法或函数的所有调用者?我在 Unix 系统上使用 GCC,但跨平台解决方案将是最高级的。

最佳答案

GCC 允许您使用 __attribute__((deprecated)) 修饰变量、函数和方法,这将在所有调用站点上引起警告(除非给出 -Wno-deprecated-declarations)。

class A {
public:
    A() __attribute__((deprecated)) {}
};
int main() {
    A a;
}
$ g++ test.c
test.cc: In function ‘int main()’:
test.cc:6: warning: ‘A::A()’ is deprecated (declared at test.cc:3)

关于c++ - 如何在 C++ 中查找函数的所有调用者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1140509/

相关文章:

c++ - Ruby 模仿 C 整数数据类型和 union

ruby - 哪些工具可用于 Ruby 重构?

c - 将具有大约 50 个局部变量的非常大的 C 函数分解为较小函数的最佳方法是什么?

c++ - llvm 通过段错误 :(Core dumped)

c++ - 定义通用比较运算符

c++ - 浮点,相等比较是否足以防止被零除?

c - gtk_file_chooser_dialog_new () 中的 g_slice_alloc () 出现段错误

if 场景的 C++ 代码重构

c++ - 如何格式化/更改 qmake 构建输出

c++ - 功能模板部分特化的解决方法?