禁用代码库中的函数调用

时间:2014-02-28 21:07:46

标签: c++

基于一个声明不佳且最近删除的SO问题(“是否可以在不调用它的情况下调用函数?”)我有一个类似的问题,希望更合乎逻辑的观点。

从代码库中禁用函数调用是否可能/最佳实践是什么?通过禁用我并不是说要通过整个代码来手动注释掉函数(这是一个有效但有点乏味的任务)。我能想到的唯一方法是

  1. 输入功能后立即返回

    ret_type foo()
    {
        return ret_type();
        // actual implementation is not allowed to run
    }
    
  2. 当调用函数使用返回码时,这会有点危险。

    1. 用空闲宏替换声明

      ret_type foo();
      #define foo() do { void; } while (0);
      
    2. 是否有标准方法,可能是编译器挂钩,执行此操作的pragma指令以及其他方式是什么?

1 个答案:

答案 0 :(得分:1)

  

是否有标准方法,可能是编译器挂钩,执行此操作的pragma指令以及其他方式是什么?

让我们一起思考一下。让我们考虑两个主要案例:

  • 该函数返回void
  • 该函数返回

在第一种情况下,您可以简单地获取函数的主体并将其注释掉。 BOOM:残疾人。

在第二种情况下,您有一个返回值。让我们考虑另外两种情况:

  • 使用返回的值
  • 未使用返回值

在第一种情况下,你应该问自己:我可以返回一个虚拟值并侥幸逃脱吗?如果答案是肯定的,那么就这样做。如果没有,那么除了重构整个代码之外,你无法做任何事情。

在第二种情况下,您可以将其注释掉,但是为什么要首先返回一个值。