在名为lib_angles.f90的fortran源文件中,我有以下函数声明
#ifdef NDEBUG
pure function la_get_quadrant(A)
#else
function la_get_quadrant(A)
#endif
我在配置文件中使用以下设置
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
PREDEFINED = NDEBUG
运行最新版本的doxygen(1.8.5)会产生以下输出,
(...)
Reading /home/pmginacio/bin/doc/test/lib_angles.f90...
Parsing file /home/pmginacio/bin/doc/test/lib_angles.f90...
********************************************************************
Error in file /home/pmginacio/bin/doc/test/lib_angles.f90 line: 38, state: 4
********************************************************************
Segmentation fault (core dumped)
问题似乎在于预处理器没有选择其中一个函数声明。当我在代码中评论其中一个时,
#ifdef NDEBUG
pure function la_get_quadrant(A)
#else
!function la_get_quadrant(A)
#endif
doxygen正常执行。
为什么呢?应该如何使用预处理器?