这个问题需要解释一下,抱歉。我正在修复 doxygen 解析一些 C++ 代码时的疏忽,我遇到了一个不寻常的极端情况,doxygen 没有解决这个问题。我有一个修复,但我想让它更通用,所以我需要一些解释。
为了说明 doxygen 失败的情况,我将定义一个涉及辛普森一家的人为示例(因为这似乎对这类问题很受欢迎)。假设我们有以下枚举:
enum simpson { HOMER, MARGE, BART, LISA, MAGGIE };
现在我们想将枚举值传递给一个方法(自然是 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?、其他?就此而言,“与参数名称同名的方法参数的类型说明符”概念是否有名称,以便我可以获得更多详细信息?