例如考虑这个单因素:
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
这个想法是使用这个常量而不是函数名,所以如果我改变函数的名称,就不需要查看其余代码来更新函数调用自身的名称。
答案 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;
}
就个人而言,我没有看到这一点。当然,你只在一个地方更改了功能名称,但是值得吗?