Doxygen 无法扩展 AUTOSAR 宏
Doxygen can't expand AUTOSAR macros
我正在使用 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 输出的示例:
有人以前见过这个问题并且能够修复它吗?
如果我使用你的代码:
#define P2VAR(ptrtype, memclass, ptrclass) ptrtype *
typedef P2VAR( uint8, AUTOMATIC, DATA_LOCATION) var_1;
typedef P2VAR( uint8, AUTOMATIC, DATA_LOCATION) var_2;
typedef P2VAR( uint8, AUTOMATIC, DATA_LOCATION) var_3;
作为 doxygen 配置文件:
QUIET=YES
EXTRACT_ALL=YES
ENABLE_PREPROCESSING=YES
MACRO_EXPANSION =YES
EXPAND_AS_DEFINED=YES
GENERATE_XML=YES
我只在定义部分看到 P2VAR
一次,在索引部分看到一次(当然还有代码部分)。
我在 doxygen 版本 1.8.20 以及版本 1.8.9.1
的情况下看到了这一点
当我尝试一个简单的代码时,它工作正常,就像@albert 的回答中提到的那样,但它仍然无法在大型代码上工作。
对我有用的是在预定义配置中添加宏,如下所示:
PREDEFINED = "FUNC(rettype,memclass)=rettype" \
"P2VAR(ptrtype,memclass,ptrclass)=ptrtype *" \
"VAR(type,memclass)=type"
我正在使用 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 输出的示例:
有人以前见过这个问题并且能够修复它吗?
如果我使用你的代码:
#define P2VAR(ptrtype, memclass, ptrclass) ptrtype *
typedef P2VAR( uint8, AUTOMATIC, DATA_LOCATION) var_1;
typedef P2VAR( uint8, AUTOMATIC, DATA_LOCATION) var_2;
typedef P2VAR( uint8, AUTOMATIC, DATA_LOCATION) var_3;
作为 doxygen 配置文件:
QUIET=YES
EXTRACT_ALL=YES
ENABLE_PREPROCESSING=YES
MACRO_EXPANSION =YES
EXPAND_AS_DEFINED=YES
GENERATE_XML=YES
我只在定义部分看到 P2VAR
一次,在索引部分看到一次(当然还有代码部分)。
我在 doxygen 版本 1.8.20 以及版本 1.8.9.1
当我尝试一个简单的代码时,它工作正常,就像@albert 的回答中提到的那样,但它仍然无法在大型代码上工作。
对我有用的是在预定义配置中添加宏,如下所示:
PREDEFINED = "FUNC(rettype,memclass)=rettype" \
"P2VAR(ptrtype,memclass,ptrclass)=ptrtype *" \
"VAR(type,memclass)=type"