结构和语句和其它控制子句和它的范围内的括号被期望有少点的缩排。如果你的程序中的tab的值不是8个空格,你可以使用-t 选项 (见章节11.3缩排检查).
1.5.59
-526-符号“Symbol”没有定义
外部的名称被引用,但是没有被定义,而且没有程序在任何库头文件中,或者出现在库模块中。对单元检查,这个信息被抑制。如果 Symbol 是一个库符号,确保它被在你所包含的头文件中声明。而且确保这个头文件被作为PC-lint/FlexeLint 的库头文件。做为选择,这个符号可以被声明在一个库模块中,见章节6.1库头文件和章节 6.2 库模块了解进一步的讨论。
1.5.60 -527-不能达到的
程序的部分代码不能达到。
1.5.61
-528-符号“Symbol”没有引用
-529-在函数定义的符号“Symbol”没有引用 -530-符号“Symbol”在使用之前没有进行初始化 -531-对于标示符“Symbol”来说,位域存储空间太大
static 变量或 static函数在被声明后没有在模块内引用。
1.5.62
变量被声明了但是没有在函数内引用。
1.5.63
一个auto 变量在使用前没有被初始化。 1.5.64
结构中给出的位域大小超过了一个 int的大小。
1.5.65 -532-函数“Symbol”的返回值不一致
函数的声明(或定义) 不以前的语句应用于不同的返回模式 (函数的返回模式和函数是否返回一个值有关。)。 从一个声明中察看函数返回是否是void来觉得函数的返回模式,或者观察是否给出一个明确的类型。见 fvr 和 fvo 标志在章节5.5标志选项.。
1.5.66
-533-函数“Symbol”在此处是否应该有返回值
和以前的语句相比应用不
在一个函数内的返回语句(或在函数的结尾缺少一个return )
同的返回模式。参见fvr、fvo 、fdr 标志在章节5.5标志选项.
1.5.67
-534-函数返回值被忽略
例如,在一个自己的语句中或逗号操作符的左手边。试试:(void) function(); 要调用一个函数并忽略它的返回值,见fvr、fvo 和 fdr 标志在章节5.5标志选项。 1.5.68 -537-重复包含头文件
文件被正常处理甚至给出这个信息。如果它是你的标准实践要重复包含文件,那么抑制这个信息。
1.5.69
-538- 数组大小超过
数组大小等于或者超过64k 字节
1.5.70 -539-不期望从当前位置积极缩排
当前行发现被积极的缩排,子句可怀疑的没有控制行。例如:
if( n > 0 ) x = 3; y = 4;
对y = 4;将发布这个告警。位置引用是if子句。见章节11.3缩排检查
1.5.71
-540-分配的存储空间太小
字符串初始化超过了其所分配的内存的大小。 如: char acTemp[5] = \
1.5.72
-541-分配的存储空间太小
字符常量(用\\xddd or \\xhhh确定的)的存储空间长度等于或者超过字节的bit数2**b。 -sb选项确定,缺省是-sb8。
1.5.73
-542-超过bit字段的存储大小
试图分配一个值到看起来太小的位域。这个被分配的值或者是比目标大的另一个位域的值,或者是一个太大的数字值。你可以转换这个值到一个普通的无符号类型来抑制这个信息。如果这个位域是一个int。例如:
struct { int b : 1 } s;
s.b = 1; /* Warning - - requires 0 or -1 */
这种情况的解决方法是使用 'unsigned' 代替 'int' 在 b 的声明中。
1.5.74
-544-此处endif 或者else后面没有紧跟EOL符号(行结束符号)
endif 或者 else 后面应该紧跟EOL符号。如:
#if ----
#endif if () { --- }
一些编译器明确地允许注释紧跟#endif。如果你按照协定,可以关闭这个消息。
1.5.75
-545- & 用法值得怀疑
试图取数组名的地址。这种表达式是官方合法的(K&R C ), 但是没有一致的使用,因此,令人怀疑,但是,表达式在标准C中上合法的,指定一个指针到数组。例如:
int a[10]; int (*p) [10];
那么 a 和 &a, 作为指针,都代表同样的位模式,但是 a 是一个指向 int 的指针,&a 是一个指向数组10个int 的指针。只有 &a 可以被分配给 p 没有抱怨。如果你以这种方式使用& 操作符,我们建议你抑制这个信息。
1.5.76
-546-& 用法值得怀疑
试图取函数名的地址。因为函数名自己被提升到地址,使用 & 是多于的,可能导致错误。
1.5.77 -547-重复定义符号“Symbol” 指出的符号以前定义过(通过 #define)为其它值。
1.5.78
-548-有if没有else -549-转换做法令人怀疑
发现一个if(e); 的结构,没有紧跟一个 else。 这很可能是一个不希望的分号导致。
1.5.79
执行了指针和一些列举的类型转换。这可能是一个错误,检查你的代码,如果这不是一
个错误,在最终的转换前转换项为一个中间的格式 (例如一个 int 或一个 long)。
1.5.80
-550-符号“symbol”被赋值后没有被使用
一个变量 (一些函数的局部变量)没有被访问。这意味着这个变量的值一直没有被使用。可能这个变量被分配了一个值,但是从没有被使用。注意:一个变量的值通过自增或自减不被认为是被访问了的,除非自增或自减在一个表达式内,使用结果的值。同样应用于格式的结构:
var += expression。如果取变量的地址,它的值假定被访问。一个数组、结构、联合被认为访问了的,只要其中的部分被访问了。
1.5.81
-551 -静态符号“symbol”被赋值后没有被使用
一个变量(在模块水平被声明为 static ) 没有被访问,尽管变量被引用。见信息550 对访问的描述。
1.5.82
-552-外部符号“symbol”被赋值后没有被使用 -553-预处理变量“Name”没有定义,假设是0
一个外部变量没有被访问,尽管这个变量被引用了。见信息550 对访问的描述。 1.5.83
指示的变量在以前没有在一个#define 语句中定义,但是它却被使用在预处理条件格式 #if 或 #elif 中。按照惯例所有的变量在预处理表达式中应该被预先定义。这个变量被假定值为0。
1.5.84
-555- K&R没有#elif
被设置。或者不要设置这个标志,或者不要
#elif 指示被使用,K&R 预处理标志 (+fkp)
使用#elif。
1.5.85
-556- “#”预处理指令没有对齐
在一个行内的预处理指令缩排,并且K&R 预处理标志(+fkp) 被设置。或者不要设置这个标志,或者不要缩排#。
1.5.86
-557-编译器无法识别的格式
由printf, fprintf, sprintf, scanf,fscanf,
或sscanf函数提供的格式字符串不认识。它不是一个
标志格式,也不是一个用户定义的格式(见printf_code和scanf_code,章节5.7其它选项).
1.5.87
-558- 格式字符串与参数数目不统一
用于printf, sprintf, fprintf, scanf, fscanf 或sscanf 的参数数目和期望的分析格式字符串的数目不一致。
1.5.88
-559- 格式字符串与参数不统
printf, sprintf或fprintf
等等给出的参数和期望的分析格式字符串不一致。参数计算从1开
始,包括文件、字符串和格式说明。例如:
sprintf( buffer, \
将在参数数字3上显示错误,因为常量371不是一个浮点数。
1.5.89
-560-没有参数,Integer参数应该是一个指针
scanf或printf family函数族的一个函数给出的参数应该是一个指针。对于scanf函数族,响
应所有的格式说明的参数应该指向一个可以被修改的区域。(接收扫描的结果)。对于printf 函数族,响应%s或%n 的参数也需要是指针。参数计算从1开始,包括文件、字符串和格式说明。例如:
scanf( \
将产生告警,第二参数应该是个指针。
1.5.90
-561-调用scanf, sscanf, or fscanf函数时格式化字符串与参数格式不一致
scanf, sscanf或fscanf scanf( \
给定的参数是一个指针,和预期的格式字符串的结果不一致。参数
计算从1开始,包括文件、字符串和格式说明。例如:如果n 被说明为int 那么: 对第二个参数产生告警。
1.5.91
-562-函数原型中需要省略号(…)
在一个函数原型内,一个逗号跟着一个右括号。这在一些编译器中等于一个省略号 (三个点) ,这在 PC-lint/FlexeLint中是假定的。如果你的编译器不接受省略号但是接受这个假定,那么你将抑制这个信息。
1.5.92
-563-标签“symbol”未被引用 -564-变量依赖于求值的顺序
Symbol 在引用的位置 Location表现为一个标签,但是没有语句引用这个标签。
1.5.93
在同样的表达式中变量修改和访问的结果取决于计算的顺序是从左到右还是从右到左。一个例子:
n + n++ 因为没有保证在递增n之前首先访问n 。其它的典型例子参考章节11.1计算顺序and 章节11.5volatile检查。 变量也对在表达式中的重复使用进行检查。
1.5.94
-565- Tag“symbol“未定义,假定在文件级别的范围
tag出现在一个原型内,或内部的块中,而且在外部(文件水平)以前没有见过。对于大多数编译器,这不是一个错误,你可以安全地抑制这个信息。另一方面,要严格按照标准C,你应该在程序早期放置一个小声明桩。例如:
struct name;
足够保留一个对name的在符号表中的位置。
1.5.95
-566-printf/scanf系列函数中的格式字符串不一致或冗余
这个信息是对printf/scanf 函数族的格式化进行检查。在格式说明中发现的指示的字符Char和在通用的格式说明中的早些的字符不一致或多余。例如,一个格式包含\将产生字符's' 指示的这个错误,这是因为长度修改器被设计成用于整型或浮点型转换,没有字符串转换。这些字符通常被编译器忽略。
1.5.96
-567- printf/scanf系列函数中的格式字符前缺少数字
这个信息是对printf/scanf 函数族的格式内的格式说明检查。在扫描格式的特定点期望一个数字域或星号。例如:%-d 需要一个在格式域的十进制整型的左边调整,但是既然给出没有,这个需要就是没有意义的。
1.5.97
-568-非负数不可能小于0
比较格式:
u >= 0 0 <= u u < 0 0 > u
是可疑的,如果 u 是一个无符号量,或一个量断定永远不会小于零。参见信息775。
1.5.98
-569-赋值时的信息丢失
从一个常量到一个整型变量的一个分配(或隐含分配,见Context)不够大去拥有常量。
1.5.99
-570-赋值时符号位的丢失
从一个负值常量到一个无符号量的一个分配(或隐含分配,见Context)。转换这个常量为unsigned 将去除这个诊断,但是这是你希望的吗。
1.5.100
-571-可疑的转换
通常这个信息的发布针对格式的转换:
(unsigned) ch
这里 ch 被声明为 char ,而char 是有符号的。尽管转换可能看起来阻止对 ch 的符号扩展,它没有按照正常的C语言的提升规则,ch 首先被转换为 int, 要抑制符号扩展,你可以使用:
(unsigned char) ch
另外,如果符号扩展是你希望的,你仅仅希望抑制这个告警,你可以使用:
(unsigned) (int) ch
1.5.101 -572-位移值太大
一个量被右移,它的精度等于或小于移位的值。例如:
ch >> 10
将得出这个信息,如果 ch 类型是 char ,这里 char 是一个小于 10 比特宽度(通常情况下)的类型。在这种情况下抑制这个信息,你可以转换移位的量的类型的长度至少是移位的值。常量的精度(包括枚举常量) 从需要在它的二进制表示的比特的数量决定。通过转换精度不会改编,所以仍旧产生 (unsigned) 1 >> 3 信息。但是通常表达式例如 1>>3能合法发生的唯一的方式是通过一个宏。在这种情况下使用: -emacro。
1.5.102
-573-在除法中,混合使用有符号数和无符号数
/ 或 % 的一个操作数是有符号的,另一个是无符号的;甚至有符号的量可能是负值。例
如:
u / n
这里 u 是一个无符号的,n 是一个有符号的,将发布这个信息,但是:
u / 4
将不会,甚至 4 是名义上地的 int。在任何情况下混合有符号量和无符号量都不是个好主意,但是, 对于除法,一个负值可能产生破坏。例如:
n = n / u
如果 n 为 -2 , u为 2,不是分配 -1 到 n ,而是分配一些非常大的值。要解决这个问题,或者转换整数为无符号的如果你知道它永远不会小于零,或者转换 unsigned 为一个整数如果你知道它永远不会超过整数的最大值。
1.5.103
-574-在关系表达式中,有符号数和无符号数混合使用
四个关系操作符是:> >= < <=
其中的一个关系操作符的操作数是有符号的,其它的是无符号的;而且有符号的量是一个负值。例如: if( u > n ) ...
这里 u 是一个无符号的,n 是一个有符号的, 将得出这个信息,但是: if( u > 12 ) ...
将不会 (甚至 12 是一个正式的 int ,明显它不是负值)。混合有符号和无符号的量在一起在任何情况下不是个好主意,但是,对于四个关系操作符,一个负值可以产生模糊的结果。例如,如果条件:
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库PClint错误码大全(5)在线全文阅读。
相关推荐: