1. 'xxxxxxxxx'declared but never used
说明了'xxxxxxxx'但未使用。在源文件中说明了此变量,但没有使用当编译程序遇到复合语句或函数的结束处时,发出警告。
2. 'xxxxxxxx' is assigned a value which is never used
'xxxxxxx'被赋值,没有使此变量出现在一个赋值语句中,但直到函数结束都不得未使用。
3. 'xxxxxxxx'not part of structure
'xxxxxxxxx'不是结构的上部分出现在蹼(.)或箭头(→)左边的域名不是结构的一部分,或者点的左边不是结构,箭头在左边不指向结构。
4. Ambiguous operators need parentheses
二义性操作符需要括号。当两个位移、关系或按位操作符在一起使用而不加括号时,发出此警告;当一加法或减法操作符不加括号与一位移操作符出现在一起时,也发出此警告。程序员总是混淆这些操作符的优先,因为它们的优先级不太直观。
5. Both return and return of a value used
既用返回值。编译程序发现同时带值返回和不带值返回的return语句,发出此类警告。
6. Call to function with prototype
调用无原型函数。如果'原型请求警告可用,且又调用了一无原型的函数,就发出此类警告。
7. Call to function 'xxxx'with prototype
调用无原型的'xxxx'函数。如果“原型请求”警告可用,且又调用了一个原先没有原型的函数'xxxx'就发出本警告。
8. Code has no effect
代码无效。当编译程序遇到一个含无效操作符的语句时,发出此类警告。如语句:a+b,对每一个一变量都不起作用,无需操作,且可能引出一个错误。
9. Constant is long
常量是long类型。当编译程序遇到一个十进制常量大于32767,或一个八进制常量大于65535而其后没有字母'I'或'L'时,把此常量当作long类型处理。
10. Constant out of range in comparision
比较时常量超出了范围。在源文件中有一种比较,其中一个常常量表达式超出了另一个常量表达式类型所允许的范围。如一个无符号常量跟-1比较没有意义。为得到一个大于32767(十进制)的无符号常量,可以在常量前加上unsigned (如(unsigned )65535)或在常量后加上字母‘u ’或'U'(如65535);
11. Conversation may lose significant digits
转换可能丢失高位数字。在赋值操作或其它情况下,源程序要求把long 或unsigned 类型转变成int 或unsigned int 类型。在有些机器上,因为 型和 型变量具有相同长度,这种转换可能改变程序的输出特性;
无论此警告何时发生,编译程序仍将产生代码来做比较。如果代码比较后总是给出同样结果,比如一个字符表达式与4000比较,则代码总要进行测试。这还表示一个无符号表达式可以与-1比较,因为8087机器上,一个无符号表达式与-1具有相同的位模式;
12. Function should return a value
函数应该返回一个值。源文件中说明的当前函数的返回类型既非 型 也非 型,但编译程序未发现返回值。返回int 型的函数可以不说明,因为在老版本的C语言中,没有void 类型来指出函数不返回值。
13. Mixing pointers to signed and unsigned char
混淆signed 和unsigned 字符指针。没有通过显示的强制类型转换,就把一个字符指针变为无符号指针,或相反。
14. No deceleration for function 'xxxxxxxx'
函数'xxxxxxxx '没有说明。当“说明要求”警告可用,而又调用了一个没有预先说明的函数时,发出此警告。函数说明可以是传统的,也可以是现代的风格;
15. Non-portable pointer assignment
不可移植指针赋值。源文件中把一个指针赋给另一非指针,或相反。作为特例,可以把常量零赋给一指针。如果合适,可以强行抑制本警告;
16. Non-portable pointer comparision
不可移植指针比较。源文件中把一个指针和另一非指针(非常量零)作比较。如果合适,可以强行抑制本警告。
17. Non-portable return type conversion
不可移植返回类型转换。return 语句中的表达式类型和函数说明的类型不一致。作为特例,如果函数或返回表达式是一个指针,这是可以的,在此情况下返回指针的函数可能返回一个常量零,被转变成一个合适的指针值。
18. Parameter 'xxxxxxxx'is never used
参数'xxxxxxxx'没有使用。函数说明中的某参数在函数体里从未使用,这不一定是一个错误,通常是由于参数名拼写错误而引起。如果在函数体内,该标识符被重新定义为一个自动(局部)变量,也将出现此类警告。
19. Possible use of 'xxxxxxxx'before definition
在定义'xxxxxxxx'之前可能己使用。源文件的某一表达式中使用了未经赋值的变量,编译程序对源文件进行简单扫描以确定此条件。如果该变量出现的物理位置在对它同值之前,便会产生此警告,当然程序的实际流程可能在使用之前己赋值。
20. Possible incorrect assignment
可能的不正确的赋值。当编译程序遇到赋值操作符作为条件表达式(如if,while 或do-while语句的一部分)的主操作时,发出警告,通常是由于把赋值号当作符号使用了,如果希望禁止警告,可把赋值语句用括号括起,并且把它与零作显式比较,如:if(a=b)...应写为:if((a=b)!=0)...
21. Redifination of 'xxxxxxx'is not identical
'xxxxxxxx' 重定义不相同。源文件中对命令宏重定义时,使用的正文内容与第一次定义时不同,新内容将代码旧内容。
22. restarting compiler using assembly
用汇编重新启动编译。编译程序遇到一个未使用命令行选择项-B或#prapma inline语句的asm 。通过使用汇编重新启动编译。
23. structure passed by value
结构按值传送。如果设置了“结构按值传送”警告开关,则在结构作为参数按值传送时产生警告。通常是在编制程序时,把结构作为参数传递,而又漏掉了地址操作符(&)。因为结构可以按值传送,因此这种遗漏是可接受的。本警告只起一个批示作用。
24. suplerfluous & with function or array
在函数或数组中有多余的&号。取地址操作符(&)对一个数组或函数名是不必要的,应该去掉。
25. Suspicious pointer conversation
值得怀疑的指针转换。编译程序遇到一些指针转换,这些转换引起指针指向不同的类型。如果合适,应强行抑制此类警告。
26. Undefined structure 'xxxxxxxx'
结构'xxxxxxxx'未定义。在源文件中使用了该结构,但未定义。可能是由于结构名拼写错误或忘记定义而引起的。
27. Unknown assembler instruction
不认识的汇编指令。编译程序发现在插入的汇编语句在有一个不允许的操作码。检查此操作的拼写,并查看一下操作码表看该指令能否被接受。
28. Unreachable code
不可达代码。break,continue,goto 或return 语句后没有跟标号或循环函数的结束符。编译程序使用一个常量测试条件来检查while,do和for循环有没有失败。
29. Void function may not return a value
Void 函数不可返回值,源文件中的当前函数说明为 ,但编译程序发现一个带值的返回语句,该返回语句的值将被忽略。
30. Zero length structure
结构长度为零。在源文件中定义了一个长度为零的结构,对此结构的任何使用都是错误的。