2013-09-05 63 views
4

使用Doxygen的,我碰到這個警告偶然:爲什麼要將枚舉標記爲導出/導入中斷Doxygen的生成?

D:/<some/path>/Camera.h:20: warning: documented symbol `enum DLLPORT 
ct::CameraCapture::ct::CameraCapture::CamType' was not declared or defined. 

現在我知道爲什麼Doxygen的未找到類(命名空間顯然複製),我不明白的是爲什麼它甚至尋找它。這個枚舉位於頭文件中,直接位於類定義之上,並且該類可以很好地找到,它也不會獲得那些生成的雙重命名空間。 源代碼也在編譯,所以它可能不是導致Doxygen這些問題的語法錯誤。 具體地,源代碼看起來是這樣的:與其他enum塊發生

#ifdef CT_EXPORTS 
#define DLLPORT __declspec(dllexport) 
#else 
#define DLLPORT __declspec(dllimport) 
#endif 

#include <somelibrary> 

namespace ct { 
namespace CameraCapture { 

/**The type of camera used: 
*[...] 
**/ 
enum DLLPORT CamType { 
    CT_ENUM1=0, 
    CT_ENUM2, 
    CT_ENUM3, 
    CT_NONE 
}; 

/**\brief A parent-class to cameras of all types. 
*[...] 
**/ 
class DLLPORT Camera 
{ 
    //...some content... 
}; 
} 
} 

此相同的問題,太。 希望你們中的一些人知道那裏發生了什麼。

乾杯

+0

您不需要dllexport和dllimport枚舉。它們僅僅是一種類型的聲明,而不是代碼的聲明。只需使用'enum CamType'。 – WhozCraig

+0

我很樂意將此標記爲答案,因爲它實際上解決了我的問題。謝謝! – QuantumFlux

回答

11

你不需要DLLEXPORT也不dllimport的枚舉。它們僅僅是一種類型的聲明,而不是代碼的聲明。只需使用enum CamType。類(en'masse或by-member)將需要它,個別自由函數也是如此,但簡單的枚舉不會。

+10

C++ 11枚舉類怎麼樣?他們應該被標記爲dllexport/dllimport? –

相關問題