首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对普通炭的PC-lint / Flexelint规则

针对普通炭的PC-lint / Flexelint规则
EN

Stack Overflow用户
提问于 2012-09-20 17:02:25
回答 2查看 488关注 0票数 0

Gimpel软件的PC-lint和Flexelint有一个规则"971:使用'char‘而没有’签名‘或’unsigned‘,禁止使用普通的char类型而不指定签名。

http://www.gimpel.com/html/pub/msg.txt

我认为这是误导。如果char被用作整数类型,那么显式地指定签名可能是有意义的,但是当它用于文本字符时就没有意义了。像printf这样的标准库函数使用指向普通char的指针,而使用signedunsigned char是一种类型不匹配。当然,可以在类型之间进行转换,但这可能会导致林特试图防止的错误。

这条针对普通char类型的林特规则是否错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-29 05:26:54

PC在900-999 (和1900-1999用于C++)范围内提供的消息称为“选择注释”,默认情况下为off。如果您有某种特定方式的限制性编码指南,它们将用于使用。然后,您可以激活这些注释中的一个或多个来帮助您发现潜在的违规行为。我认为没有人在真正的开发工作中激活了所有的9xx消息。

关于char,您是正确的:它是使用一个字节(几乎总是)来实现一个真正的字符。但是,C编译器将char视为有符号或无符号的。对于C++,charunsigned charsigned char都不同。

我曾在许多嵌入式C环境中工作过,习惯上有一条编码规则,说明不允许使用普通的char。这时,这个PC Lint消息应该被激活。异常,就像与其他库的接口一样,必须被显式地允许,然后使用Lint注释来抑制单个消息。

票数 3
EN

Stack Overflow用户

发布于 2012-09-20 17:14:41

我认为他们选择强制您选择signedunsigned的原因是因为C标准没有。C标准状态charunsigned charsigned char是三种独特的类型。

例如,gcc制作默认的signed,但是可以用标志-funsigned-char修改它。

因此,我会说不,规则是没有错的,它只是试图收紧C规格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12517388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档