为什么将枚举标记为导出/导入会中断氧气生成

Why does marking an enum as exported/imported break Doxygen generation?

本文关键字:导入 中断 氧气 枚举 记为 为什么      更新时间:2023-10-16

使用Doxygen,我偶然发现了这个警告:

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

现在我知道为什么 Doxygen 找不到那个类了(命名空间显然是重复的),我不明白的是为什么它甚至要搜索它。这个枚举位于头文件中,直接在类定义上方,并且发现该类很好,它也不会生成那些双命名空间。源代码也可以编译,所以可能不是导致Doxygen这些问题的语法错误。具体来说,源代码如下所示:

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

其他enum块也会出现同样的问题。希望你们中的一些人知道那里发生了什么。

干杯

你不需要 dllexport 或 dllimport 枚举。它们只是一种类型的声明,而不是代码的声明。只需使用enum CamType.类(无论是 en'masse 还是 by-member)都需要它,单个自由函数也需要它,但简单的枚举不需要。