小编the*_*tic的帖子

PC Lint while(TRUE)vs for(;;)

我是第一次使用PC Lint.当PC Lint警告我我的时候,我正在"linting"我的代码while(TRUE).

这就是它所说的:

716:while(1)... - 找到形式的构造,而(1)......被找到.

虽然这表示期望布尔值的上下文中的常量,但它可以反映编程策略,其中无限循环以此构造为前缀.因此,它被赋予一个单独的数字,并被放入信息类别.更常规形式的无限循环前缀是(;;).

我不明白这个说法.任何人都可以帮我理解吗?

c embedded lint pc-lint

5
推荐指数
1
解决办法
1879
查看次数

PC Lint警告537:重复包含文件

如何从PC Lint处理此警告?

我有几个文件#include <GenericTypeDefs.h>.PC Lint向我显示消息Warning 537: Repeated include file 'filepath\filename.h'如果我删除此声明我无法编译.

如果可能的话,我想取消这个警告.

你可以在这里看到同样的报道.

这是我的代码,我的编译器发出警告:

checksum.h

#ifndef CHECKSUM_H
#define CHECKSUM_H

#include <GenericTypeDefs.h>

BOOL isCheckSumCorrect(const UINT8 *dataPointer, UINT8 len, UINT8 checkSumByte);

#ifdef  __cplusplus
extern "C" {
#endif
Run Code Online (Sandbox Code Playgroud)

cryptography.h

#ifndef CRYPTOGRAPHY_H
#define CRYPTOGRAPHY_H

#include <GenericTypeDefs.h>

UINT8 encrypt(UINT8 c);
UINT8 decrypt(UINT8 c);

#ifdef  __cplusplus
extern "C" {
#endif
Run Code Online (Sandbox Code Playgroud)

crc8.h

#ifndef CRC_H
#define CRC_H

#include <GenericTypeDefs.h>

UINT8 generateCRC(const UINT8 *ptr, UINT8 Len);
BOOL isCRCValid(const UINT8 *ptr, UINT8 Len, UINT8 CRCChar); …
Run Code Online (Sandbox Code Playgroud)

c lint pc-lint

4
推荐指数
1
解决办法
6529
查看次数

Gimpel的PC-lint和Flexelint; 谁用过它们?

所以我已经阅读了一些杂志文章和Gimpel的PC-lint和Flexelint C/C++编译器的网站.

这真的很贵(至少对我而言),但似乎可能有一些保证成本的优点.

所以我想知道是否有其他人使用/购买过它们并且可以提供他们的意见?

compiler-construction static-analysis lint pc-lint

2
推荐指数
1
解决办法
3171
查看次数

PC Lint错误714

在我的CRC8.c我有这个功能:

BOOL isCRCValid(const UINT8 *ptr, UINT8 Len, UINT8 CRCChar){
    return CRCChar == generateCRC(ptr, Len); //generareCRC returns a UINT8
}
Run Code Online (Sandbox Code Playgroud)

它是在声明CRC8.h,但PC Lint返回以下内容.

Info 714: Symbol 'isCRCValid(const unsigned char *, unsigned char, unsigned
    char)' not referenced
Info 830: Location cited in prior message
Run Code Online (Sandbox Code Playgroud)

帮助说714是:

714:未引用符号'符号'(位置) - 已定义已命名的外部变量或外部函数但未引用.单元结帐时禁止显示此消息(-u选项).

和830是:

830在先前消息中引用的位置 - 消息830是以"规范形式"传达嵌入在某些其他消息中的位置信息的工具.例如,考虑(稍微简化)消息:

     file x.c line 37:  Declaration for 'x' conflicts with line 22
Run Code Online (Sandbox Code Playgroud)

它包含嵌入在消息文本中的位置("第22行").编辑器和IDE(交互式开发环境)通常不能理解嵌入的位置信息,它们只能定位到标称位置(本例中的第37行).通过添加带有第22行标称位置的附加消息,用户可以通过单步执行下一条消息,在这种情况下,查看"冲突"的全部内容.下面的消息和消息831不遵循消息抑制的普通规则.如果他们这样做,那么当使用选项-w2将警告级别降低到2时,这些消息(级别3)也会消失.相反,他们继续按预期运作.要禁止它们,您需要使用以下方法之一明确关闭它们:

         -e830 
         -e831
Run Code Online (Sandbox Code Playgroud)

它们可以通过+ e830和+ e831恢复; 他们可以通过-save -restore选项保存和恢复压制状态.诸如-e8*和-e {831}之类的选项将不起作用.

因为我是PC Lint的新手,还有C的相关新手,我没有解决这个问题.

任何人都可以帮我解决这个问题吗?

c embedded lint pc-lint

2
推荐指数
1
解决办法
4691
查看次数

可以为#define分配已定义的结果吗?

是C或C++中定义的以下代码的结果?

#define FOO
#define BAR defined(FOO)
#if BAR
    int x = 1;
#else
    int x = 2;
#endif
Run Code Online (Sandbox Code Playgroud)

c c++ standards c-preprocessor

-2
推荐指数
1
解决办法
171
查看次数