gpt4 book ai didi

c - HiTech/Microchip C 的免费静态检查器?

转载 作者:行者123 更新时间:2023-12-04 09:42:33 26 4
gpt4 key购买 nike

<分区>

我正在为 HiTech C 编译器编写大量代码。我确信我的代码会受益于像 splint 这样的静态检查器, 但 splint 本身在 HiTech 的一些扩展上绊倒了,比如 cp0sfr 声明。不过,我不能只告诉 splint 跳过 HiTech header ,因为那样它就不知道我的大部分标识符来自哪里。

有人知道可以解决这个问题的静态检查器吗?

添加:扩展示例:大多数情况下,它只是新的类型限定符和绝对寻址,例如。

extern volatile cp0 unsigned int cp0_Config @ __REGADDR(16,0);
extern volatile sfr unsigned long OC2R @ 0xBF803210;

(还有 persistent 类型限定符。)

函数还有 interruptfast 限定符:

void interrupt ExceptionHandler(void) @GENERAL_EXCEPTION
{
...
}

添加:

我终于抽出时间尝试下面的 Doug Currie 方法。我使用带有 SED 的 shell 脚本去除任何尾随的“... @ ...;”绝对定位声明,并用

拆分
splint -D__32MX460F512L__ -Dsfr= -Dcp0= -Dmips32r2= -I ~/HiTechStripped mymodule.c

根据模块,夹板会提示:

< Location unknown >: Field name reused: 
Code cannot be parsed. For help on parse errors, see splint -help
parseerrors. (Use -syntax to inhibit warning)
< Location unknown >: Previous use of
< Location unknown >: Previous use of
< Location unknown >: Previous use of
[this goes on for about 100 lines...]

在其他模块上,我得到:

../../../../HiTechStripped/stdlib.h:140:39: mismatched parentheses in #if
Preprocessing error. (Use -preproc to inhibit warning)

据我所知,这是错误的:

#if defined(_XA_) && sizeof(double) == 8

我想也许我应该放弃静态检查。感谢您的回答。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com