如何在递归代码中使用__func__或__FUNCTION__常量?

时间:2012-05-29 07:49:46

标签: c++ function recursion

例如考虑这个单因素:

int factorial(int number) {
  int temp;
  if(number <= 1) return 1;
  temp = number * __FUNCTION__(number - 1);
  return temp;
}

它给出了:

error: '__FUNCTION__' cannot be used as a function

这个想法是使用这个常量而不是函数名,所以如果我改变函数的名称,就不需要查看其余代码来更新函数调用自身的名称。

1 个答案:

答案 0 :(得分:6)

你不能因为__FUNCTION__可能由实现保留,它扩展为函数名(字符串格式)。

除了更改名称外,您可能还想使用宏而不是常量:

#define MY_FUNCTION factorial

int MY_FUNCTION(int number) {
  int temp;
  if(number <= 1) return 1;
  temp = number * MY_FUNCTION(number - 1);
  return temp;
}

就个人而言,我没有看到这一点。当然,你只在一个地方更改了功能名称,但是值得吗?