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

個人的には、この点はわかりません。確かに、関数名を変更するのは1か所だけですが、それだけの価値はありますか?

于 2012-05-29T07:53:00.177 に答える