我正在开发一个跨平台的库。有些代码是依赖于平台的,因此我必须使用#ifdef
将它们分开,检查平台类型。我将一个类分成两个类,每个类都用于自己的平台。这些类有不同的名称,但最后我需要typedef
根据平台将这些类设置为一种类型:
#ifdef UNIX
/** some comment */
typedef Key_unix Key;
#elif WIN
/** another comment */
typedef Key_win Key;
#endif
生成的文档仅显示带有两个注释的第一个typedef
。如何同时显示typedef
个,每个都有自己的评论?
答案 0 :(得分:8)
根据我的理解,doxygen有自己的预处理器来评估#ifdefs。您可以使用PREDEFINED
选项定义宏。
# The PREDEFINED tag can be used to specify one or more macro names that
# are defined before the preprocessor is started (similar to the -D option of
# gcc). The argument of the tag is a list of macros of the form: name
# or name=definition (no spaces). If the definition and the = are
# omitted =1 is assumed. To prevent a macro definition from being
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
但是,即使你设置了PREDEFINED = UNIX WIN
,你也有#elif,它只会评估第一个#ifdef。作为替代方案,您可以尝试:
#ifdef UNIX
/** some comment */
typedef Key_unix Key;
#endif
#ifdef WIN
/** another comment */
typedef Key_win Key;
#endif
编译代码时,你不太可能同时定义UNIX和WIN。