基于一个声明不佳且最近删除的SO问题(“是否可以在不调用它的情况下调用函数?”)我有一个类似的问题,希望更合乎逻辑的观点。
从代码库中禁用函数调用是否可能/最佳实践是什么?通过禁用我并不是说要通过整个代码来手动注释掉函数(这是一个有效但有点乏味的任务)。我能想到的唯一方法是
输入功能后立即返回
ret_type foo()
{
return ret_type();
// actual implementation is not allowed to run
}
当调用函数使用返回码时,这会有点危险。
用空闲宏替换声明
ret_type foo();
#define foo() do { void; } while (0);
是否有标准方法,可能是编译器挂钩,执行此操作的pragma指令以及其他方式是什么?
答案 0 :(得分:1)
是否有标准方法,可能是编译器挂钩,执行此操作的pragma指令以及其他方式是什么?
让我们一起思考一下。让我们考虑两个主要案例:
void
在第一种情况下,您可以简单地获取函数的主体并将其注释掉。 BOOM:残疾人。
在第二种情况下,您有一个返回值。让我们考虑另外两种情况:
在第一种情况下,你应该问自己:我可以返回一个虚拟值并侥幸逃脱吗?如果答案是肯定的,那么就这样做。如果没有,那么除了重构整个代码之外,你无法做任何事情。
在第二种情况下,您可以将其注释掉,但是为什么要首先返回一个值。