问题:
source insight的代码因为添加了类似FUNC()这样的宏来定义函数的输出,导致了source insight误认为宏为函数实体,让source insight无法正确确认函数主体。
解决方法:
安装完source insight 后在目录C:\Users\Admin\Documents\Source Insight 4.0下有个叫C.tom的文件。将Autosar中关于这部分的宏定义代码添加到这个文件中,然后重启软件即可。
Autosar的宏定义如下:
#define FUNC(rettype, memclass) rettype
#define FUNC_P2CONST(rettype, ptrclass, memclass) const rettype *
#define FUNC_P2VAR(rettype, ptrclass, memclass) rettype *
#define P2VAR(ptrtype, memclass, ptrclass) ptrtype *
#define P2CONST(ptrtype, memclass, ptrclass) const ptrtype *
#define CONSTP2VAR(ptrtype, memclass, ptrclass) ptrtype * const
#define CONSTP2CONST(ptrtype, memclass, ptrclass) const ptrtype * const
#define P2FUNC(rettype, ptrclass, fctname) rettype (* fctname)
#define CONSTP2FUNC(rettype, ptrclass, fctname) rettype (* const fctname)
#define CONST(consttype, memclass) const consttype
#define VAR(vartype, memclass) vartype
#define P2P2VAR(ptrtype, memclass, ptrclass) ptrtype **
C.tom文件末尾添加内容如下:
FUNC(rettype, memclass) rettype
FUNC_P2CONST(rettype, ptrclass, memclass) const rettype *
FUNC_P2VAR(rettype, ptrclass, memclass) rettype *
P2VAR(ptrtype, memclass, ptrclass) ptrtype *
P2CONST(ptrtype, memclass, ptrclass) const ptrtype *
CONSTP2VAR(ptrtype, memclass, ptrclass) ptrtype * const
CONSTP2CONST(ptrtype, memclass, ptrclass) const ptrtype * const
P2FUNC(rettype, ptrclass, fctname) rettype (* fctname)
CONSTP2FUNC(rettype, ptrclass, fctname) rettype (* const fctname)
CONST(consttype, memclass) const consttype
VAR(vartype, memclass) vartype
P2P2VAR(ptrtype, memclass, ptrclass) ptrtype **
如果还不能识别,需要去掉宏定义后面的具体内容,只保留前面的宏名。如下:
FUNC(rettype, memclass)
FUNC_P2CONST(rettype, ptrclass, memclass)
FUNC_P2VAR(rettype, ptrclass, memclass)
P2VAR(ptrtype, memclass, ptrclass)
P2CONST(ptrtype, memclass, ptrclass)
CONSTP2VAR(ptrtype, memclass, ptrclass)
CONSTP2CONST(ptrtype, memclass, ptrclass)
P2FUNC(rettype, ptrclass, fctname)
CONSTP2FUNC(rettype, ptrclass, fctname)
CONST(consttype, memclass)
VAR(vartype, memclass)
P2P2VAR(ptrtype, memclass, ptrclass)