防止Doxygen执行条件编译(编译器内在定义)

时间:2012-11-16 07:51:53

标签: c-preprocessor doxygen

我有很多代码基于来自编译器的定义进行条件编译,而不是代码本身或外部头文件中的任何定义。例如,我经常会遇到如下事项:

#if defined _MSC_VER || defined __ICL
// A lot of freakin code
#elif defined __GNUC__  || defined __ICC
// A bunch more here
#else
#error "Unsupported environment"
#endif

我需要为platofm /编译器特定部分中的所有代码生成文档,但我不能简单地将ENABLE_PREPROCESSING设置为NO,因为根据文档,INCLUDE_GRAPH和INCLUDED_GRAPH必须为YES才能正常工作。

那么,我该怎么做?

1 个答案:

答案 0 :(得分:1)

您首先必须在"预定义"中定义宏DOXYGEN或类似内容。 doxygen配置的一部分。然后,您必须将#elif拆分为单独的#if,并跟踪您找到一个有效配置的事实。

#if defined _MSC_VER || defined __ICL || defined DOXYGEN
#define WE_FOUND_SOME
// A lot of freakin code
#endif
#if defined __GNUC__  || defined __ICC || defined DOXYGEN
#define WE_FOUND_SOME
// A bunch more here
#endif
#ifndef WE_FOUND_SOME
# error "Unsupported environment"
#endif

但要注意,如果这些不同的部分定义相同的功能或宏,那么doxygen很容易丢失。