1

例如考虑这个单阶乘:

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

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

4

1 回答 1

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;
}

就个人而言,我不明白这一点。诚然,您只需在一处更改函数名称,但这值得吗?

于 2012-05-29T07:53:00.177 回答