這個問題需要一些探索,對不起。我在解析一些C++代碼的doxygen中修正了一個疏忽,並且遇到了doxygen沒有考慮到的不尋常的角落案例。我有一個修復,但我想使它更通用,所以我需要一些解釋。C++對於哪些類型,參數類型名稱可以與具有類型說明符的參數名稱相同?
爲了說明doxygen失敗的情況,我將定義一個涉及辛普森一家人爲的例子(因爲這似乎是這些類型的問題很受歡迎)。比方說,我們有以下枚舉:
enum simpson { HOMER, MARGE, BART, LISA, MAGGIE };
現在我們要枚舉值傳遞到(辛普森類自然的)的方法,看起來像這樣:
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」視爲一個參數類型,沒有參數名稱。在上面的enum的情況下,我想出了一些代碼來修復doxygen。
我的問題是,這種技巧有效的其他類型? struct?,union?,typedef?,其他?對於這個問題,「方法參數的類型說明符與參數名稱相同」的概念有一個名稱,以便我可以獲得更多的細節。
不錯(呃......在「我不知道」這個意思,但不是_nice_)的伎倆。 – 2011-05-23 02:22:46
請原諒我,而我發現誰寫了這些代碼,並將他們在臉上:P。 – 2011-05-23 02:45:14
什麼編譯器和版本?上面的代碼示例應該編譯時不需要*詳細的類型說明符*。 – 2011-05-23 07:44:38