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

rsk*_*k82 1 c++ recursion function

例如,考虑这个单因素:

int factorial(int number) {
  int temp;
  if(number <= 1) return 1;
  temp = number * __FUNCTION__(number - 1);
  return temp;
}
Run Code Online (Sandbox Code Playgroud)

它给:

error: '__FUNCTION__' cannot be used as a function
Run Code Online (Sandbox Code Playgroud)

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

Luc*_*ore 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;
}
Run Code Online (Sandbox Code Playgroud)

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