重新定义 short long 以便在嵌入式 c 代码上使用代码分析工具

Redefine short long to use code analysis tools on embedded c code

我正在尝试使用 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 错误。


是使用 #define short 这将有效地从类型声明中删除 short 使其成为 long.

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

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