【发布时间】:2020-08-31 06:42:02
【问题描述】:
我正在使用 Doxygen v1.8.9.1 来分析 AUTOSAR C 代码。 AUTOSAR 代码有一些宏来定义变量和函数。像这样的:
#define P2VAR(ptrtype, memclass, ptrclass) ptrtype *
我尝试更改以下配置:
ENABLE_PREPROCESSING
MACRO_EXPANSION
EXPAND_ONLY_PREDEF
EXPAND_AS_DEFINED
SKIP_FUNCTION_MACROS
无论我做什么,它都无法识别使用这些宏定义的函数和变量。相反,它会看到多个具有相同名称的函数。
例如: 如果我有以下代码:
typedef P2VAR( uint8, AUTOMATIC, DATA_LOCATION) var_1;
typedef P2VAR( uint8, AUTOMATIC, DATA_LOCATION) var_2;
typedef P2VAR( uint8, AUTOMATIC, DATA_LOCATION) var_3;
它不会看到 3 个 uint8 类型的变量名称 var_1, var_2, var_3 但它看到 3 个同名的函数 P2VAR
xml 输出示例:
任何人以前见过这个并能够解决它?
【问题讨论】:
-
“它看到 3 个功能”是什么意思?前面的
typedef让我感到困惑。 -
只是为了做一个实验(或者是为了让问题描述更加尖锐),如果在使用前插入宏定义会怎样?
-
@RubberBee 它在输出中将它们显示为函数(请参阅添加到问题中的屏幕截图)。
-
我还尝试了其他宏,其中定义就在使用之前。我得到同样的结果。这就是为什么我怀疑我有一些全局配置问题。
-
版本 1.8.9.1 有点旧(2015 年 1 月),当前版本是 1.8.20。当您使用当前版本时会发生什么?