在嵌入式C代码上重新定义使用时间短的代码分析工具

问题描述

我正在尝试使用SourceTrails(https://www.sourcetrail.com/)从MPLAB CX8编译器分析嵌入式c。 它并非完全没有问题,因为编译器使用了C标准中未提供的许多自定义功能

其中之一是使用short long来指示全局包含中的24位变量,例如:

extern volatile unsigned short long     TBLPTR;

SourceTrail(使用clang)显示错误 不能与以前的“短”声明说明符组合。

仅出于分析目的,我想在全局包含顶部指定以下内容

#define "short long" long

但是很明显,这失败了!

我可能必须执行搜索和替换,但是如果有一个更简单的方法,那会很棒吗?

解决方法

您可以使用类似的内容:

#define short int

short long变量现在将是long,至少在诸如gccclang之类的主流编译器中。

任何short变量现在都将是int,其副作用是short int声明现在将导致invalid combination错误。


The solution found by the OP使用的是#define short,它将有效地从类型声明中short移除long

副作用是声明为short的变量将没有类型或存储类,因此将默认为int

clanggcc之类的编译器中,类型int long将默认为long,有效地使两种解决方案成为可能,并注意不同的副作用。