PC-LINT中的各种错误信息都有一个相关的错误号,其中各个错误号的分配区间如下:
表1:PC-LINT错误号区间分配
错误类型 语法错误 内部错误 致命错误 告警 提示信息 可选的注解 错误号-C 1 -199 200-299 300-399 400-699 700-899 900-999 错误号-C++ 1001-1199 1400-1699 1700-1899 1900-1999 告警级别 1 0 0 2 3 注:其中200-299号告警为PC-LINT的内部错误,一般不会发生, 1.1 C语法错误
1.1.1
-1―未关闭注释 (位置) ―2―未关闭的引号 -3-#else 没有一个#if
-4-太多的#if 嵌套层次
文件结束的时候,仍然有一个未关闭的注释存在,打开的这个注释位置将被显示出来。
1.1.2
在行尾的时候,仍然存在一个同行的未关闭的引号(单引号或双引号)。
1.1.3
在一个区域内有一个#else ,但是没有一个#if, #ifdef 或#ifndef。
1.1.4
检测出一个内部的限制,有关#if的嵌套层次 (包括 #ifdef和#ifndef)。
1.1.5
-5-太多的#endif -6-堆栈溢出
出现一个#endif ,但不是#if 或 #ifdef 或#ifndef.的。
1.1.6
一个内置的不可展开的堆栈被过分扩展。可能是太多的嵌套的#if 语句、#includes 语句
(包括所有的递归的#include 语句),static块(有限制的括号) 或#define置换。
1.1.7
-7-不能打开include的文件:FileName
FileName 是不能打开的include文件的名字。,可以见flag fdi (见章节5.5 标志选项),选项 -i... (见章节5.7其它选项) 和章节13.2.1 INCLUDE 环境变量。
1.1.8
-8-未关闭的#if (位置) -9-太多的#else在#if (位置)
一个#if (或 #ifdef 或 #ifndef) 没有遇到相应的#endif。位置是#if.的位置
1.1.9
一个给定的 #if 包含一个 #else,然后轮流流被紧跟另一个 #else 或一个 #elif。错误消息给出#if语句条件包含异常的行号 1.1.10 -10- 期望的字符串
字符串是期望的记号,期望的记号不能被发现。当一定的保留字没有被认出时,给出这
条消息,例如:
int __interrupt f();
将收到一个 Expecting ';' message at the f ,因为它认为你想声明__interrupt。 改正的方法是建立一个新的保留字使用 +rw(__interrupt)。 同样,保证使用正确的编译器选项文件。见章节15.10 奇怪的编译器.
1.1.11
-11-超出大小范围 -12-需要 < or “
在#include l行确定的文件名的长度超过了FILENAME_MAX 字符。
1.1.12
-在一个#include I被检测出来后和宏置换被执行后,期望一个文件的规范格式
1.1.13 -13-不好的类型
类型形容词例如long、unsigned 等等。不能应用到紧跟的类型。
1.1.14 -14- 符号 'Symbol' 以前定义过(位置)
符号被定义第二次。提供出以前定义的位置,如果这是一个暂定的定义(没有初始化),这个消息可以用+fmd flag抑制。(章节5.5Flag 选项).
1.1.15
-15-符号'Symbol'重新被声明(TypeDiff) (位置)
符号被以前声明过或在其它模块定义过(其它位置)的类型和在当前位置的声明的类型不同。参数TypeDiffr提供了类型怎么不同的进一步信息(见章节17. 信息).
1.1.16 -16-不认识的名字
一个# 指示符后没有跟着一个可认识的单词。如果这不是错误使用+ppw 选项(章节5.7其它选项).
1.1.17 -17-未被承认的名称
A non-parameter is being declared where only parameters should be. 1.1.18 -18-符号重新声明(TypeDiff) 和此位置冲突
一个符号被重新声明。参数TypeDiff 提供类型不同的进一步信息(见Chapter 17. 信息)。位置是先前定义的位置。
1.1.19 -19-无效的声明
一个类型独自的出现而没有相关的变量,类型不是struct、union 和 enum. 一个双分号能导致这个:
int x;;
1.1.20 -20-非法使用 =
一个函数声明后紧跟一个符号.
1.1.21
-21-期望{
对于不确定大小的数组的初始化必须以一个左括号开始。
1.1.22 -22-非法的操作符
发现一个一元操作符紧跟一个操作数,这个操作符不是一个post 操作符。
1.1.23
-23-期望“:”
-碰到一个 ? 操作符, o但是没有紧跟一个期望的 : 操作符。
1.1.24 -24-期望一个表达式,但是得到一个字符串
发现一个在一个表达式开始的操作符,但是它不是一个一元操作符。
1.1.25
-25-非法的常量
在一个字符常量中遇到太多的字符。
1.1.26 -26-期望一个表达式,但是得到一个字符串 1.1.27
-27-非法的字符(0xff)
源代码中发现非法的字符。消息中提供十六进制代码。 假定是一个空格。如果你使用奇怪的字符在标识符名称中,你将得到这个信息。你可以使用选项 - ident (见章节5.7其它选项.)
1.1.28 -28-重定义一个符号(符号位置)
给出的在以前(Location)声明的冒号前的标识符不是一个label.
1.1.29
-30-期望一个常量
期望一个常量,但是没有得到。可能是在case 关键字后, 数组维数、bit field 长度、 枚举指、#if 表达式等等.
1.1.30 -31-重新定义一个符号(Symbol' conflicts with Location) 数据对象或函数在此模块中以前定义过又被定义。
1.1.31 -32 -Field 大小 (member 'Symbol') 不能是0
给出的field
的长度是非正(0或负数).
1.1.32 -33- 非法常量
当一个8进制的常量包含数字8或9时,这是一个错误的形式。
1.1.33 -34- 非常量初始化
-在一个static数据项中发现非常量初始化.
1.1.34 -35- 初始化有副作用
在一个static数据项中发现有副作用的初始化.
1.1.35 -36- 重新定义存储类的符号 'Symbol' 和位置Location冲突 对象的存储类被改变.
1.1.36 -37- 枚举值'Symbol' 不一致(和位置Location冲突)
枚举值不一致.
1.1.37 -38-符号 'Symbol' 的偏移量不一致(Location)
很多类或结构比早期的声明出现在不同的位置(从结构开始的偏移量).可能因为数组维数从一个模块到另一个模块的改变.
1.1.38 -39- 重新定义符号 'Symbol' c和位置 Location 冲突
struct 或 union 被重新定义.
1.1.39 -40- 没有声明标识符'Name'
在表达式内, 一个标识符在以前没有被声明并且没有紧跟一个左括号. Name 是标识符的名称.
1.1.40 -41- 重新定义符号'Symbol'
一个宏或函数的参数被重新定义.
1.1.41 -42-期望一个语句
1.1.42 -43-变量 'Symbol'虚的类型
在一个实例的上下文中发现虚类型例如void类型.
1.1.43 -44-需要一个switch
在一个switch外出现case或default语句.
1.1.44 -45-错误的使用register
一个变量被声明为register ,但是它的类型不应该是register (例如一个函数).
1.1.45 -46-域类型应该是int
在结构中位域应该是类型为unsigned 或 int. 如果你的编译器允许其它类型,例如char, 那么抑制这条信息.
1.1.46 -47-错误的类型
一元减需要一个算术操作数.
1.1.47 -48-错误的类型
一元的 * 或左手边的指针
(->) 操作符需要一个指针操作数o.
处理器是在它
1.1.48 -49-期望一个类型
在原型内只有类型被允许。原型是圆括号内有一系列的类型的函数声明.
检测到至少圆括号内的一个类型时,期望更多的类型或关闭的右圆括号.
1.1.49 -50-试图取非左值的地址
一元 & 操作符需要一个左值(对分配操作符左手边合适的值).
1.1.50 -51-期望整型
一元 ~ 期望一个整型(signed 或unsigned char、short、int、或long).
1.1.51 -52-期望一个左值
自动递减(--) 和自动递增(++) 操作符需要一个左值(对分配操作符左手边合适的值)。记住括号不产生左值。因此
++(char *)p;
按照ANSI标准是非法的。一些编译器允许这个结构,允许你使用+fpc 选项(指针括号是左值). (见章节5.5Flag选项.)
1.1.52 -53-期望一个标量
自动递减(--) 和自动递增(++) 操作符可能只应用于标量(算术和指针)或这些操作符定义的对象.
1.1.53 -54-被0除
常量0 w被用于除操作符 (/) 或取余操作符的右手边。
1.1.54 -55-坏类型
上下文需要一个标量、函数或结构(除非-fsa).
1.1.55 -56-坏类型
需要标量类型和指针的加/减操作符可能被加到指针中。
1.1.56 -57-坏类型
Bit 操作符( &, | 和 ^ ) 需要require 整型参数.
1.1.57 -58-坏类型
错误的参数给相关的操作符;这些通常需要两个标量和指针,不能和整数比较(除非常量0).
1.1.58 -59-坏类型
移位的数量必须是整数.
1.1.59 -60-坏类型
被移位的值必须是整数.
1.1.60 -61-坏类型
上下文需要一个布尔值. 布尔值必须是算术或指针形式.
1.1.61 -62-对操作符':'矛盾的的类型(TypeDiff)
? :的第二和第三个参数必须是一致的类型.
1.1.62 -63-期望一个左值
分配操作符期望它的第一个操作数是一个左值. 请注意a cast removes the lvaluedness of an expression. 参考flag +fpc 在章节5.5 Flag选项.
1.1.63 -64-类型不匹配(Context) (TypeDiff)
T在分配中有类型不匹配(或隐含分配,见Context)。TypeDiff 确定类型的区别. 当分配一些种类的指针时用选项 -epn, -eps, -epu, -epp (章节5.2错误禁止选项) 来抑制这个消息.
1.1.64 -65-期望一个成员名称
在一个 (.) 或 (->) 操作符后,一个成员名称应该出现.
1.1.65 -66-坏类型
用一个不允许的void 类型。如果一个void 类型放置在一个原型内,那么它必须只能是原型内的仅有类型。(参考错误号49.)
1.1.66 -67-不能从Type到 Type计算 试图非标量到整数计算.
1.1.67 -68-不能从Type到 Type计算 试图非标量到浮点数计算.
1.1.68 -69-不能从Type到 Type计算 涉及结构到结构或其它对象间的不匹配的转换. 1.1.69 -70-不能从Type到 Type计算
试图计算一个指针到一个非寻常的类型(非整数)间的计算.
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库PClint检查项目在线全文阅读。
相关推荐: