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# - 哪个是 MSCorEE.h 在单声道编译器中的等效头文件?

c# - 快速图中的无向图表示

C 数组/指针参数转换

c# - 方法对它正在调用的方法了解太多

c++ - 如何修复此子类的初始化程序列表错误?

c++ - 如何将不同的成员函数指针分配给注册类的不同实例?

c - 快速排序中的堆栈溢出错误

c - 实现BFS以返回从顶点s到t的最小长度的路径

python - 重构重复的全局字典初始化

python - 如何使用 Pandas 重构简单的数据帧解析代码