この質問には少し説明が必要です。申し訳ありません。一部の C++ コードを解析する doxygen の見落としを修正していますが、doxygen が考慮していない珍しいコーナー ケースに遭遇しました。修正はありますが、より一般的なものにしたいので、説明が必要です。
doxygen が失敗するケースを説明するために、ザ・シンプソンズを含む不自然な例を定義します (これらのタイプの質問で一般的であるように思われるため)。次の列挙型があるとしましょう。
enum simpson { HOMER, MARGE, BART, LISA, MAGGIE };
次に、enum 値を (自然に Simpsons クラスの) メソッドに次のように渡します。
const char* voicedBy(simpson simpson)
{
switch (simpson) {
case HOMER:
return "Dan Castellaneta";
case MARGE:
return "Julie Kavner";
case BART:
return "Nancy Cartwright";
case LISA:
return "Yeardley Smith";
case MAGGIE:
return "*suck* *suck*";
}
}
残念ながら、列挙型 'simpson' がパラメーター名 'simpson' と同じであることは許可されていないため、コンパイラ エラーが発生します (C# とは異なります)。しかし、C++ にはこれに対する答えがあります。次のように、型名の前に enum キーワードを置きます。
const char* voicedBy(enum simpson simpson)
コードがコンパイルされて実行されます。残念ながら、doxygen はこのケースを考慮していないため、文字列 "enum simpson simpson" 全体をパラメーター名のないパラメーター型として扱います。上記のような列挙型の場合に doxygen を修正するコードを考え出しました。
私の質問は、この種のトリックが有効な他のタイプは何ですか? struct?、union?、typedef?、その他? さらに言えば、「パラメーター名と同じ名前のメソッドパラメーターの型指定子」の概念には、詳細を取得できる名前がありますか?