资源描述
1.1.1.1.1 PC-LINT中的各种错误信息都有一个相关的错误号,其中各个错误号的分配区间如下:
表1:PC-LINT错误号区间分配
错误类型
错误号-C
错误号-C++
告警级别
语法错误
1 -199
1001-1199
1
内部错误
200-299
0
致命错误
300-399
0
告警
400-699
1400-1699
2
提示信息
700-899
1700-1899
3
可选的注解
900-999
1900-1999
注:其中200-299号告警为PC-LINT的内部错误,一般不会发生,
1.2 C语法错误
1.2.1 -1―未关闭注释 (位置)
文件结束的时候,仍然有一个未关闭的注释存在,打开的这个注释位置将被显示出来。
1.2.2 ―2―未关闭的引号
在行尾的时候,仍然存在一个同行的未关闭的引号(单引号或双引号)。
1.2.3 -3-#else 没有一个#if
在一个区域内有一个#else ,但是没有一个#if, #ifdef 或#ifndef。
1.2.4 -4-太多的#if 嵌套层次
检测出一个内部的限制,有关#if的嵌套层次 (包括 #ifdef和#ifndef)。
1.2.5 -5-太多的#endif
出现一个#endif ,但不是#if 或 #ifdef 或#ifndef.的。
1.2.6 -6-堆栈溢出
一个内置的不可展开的堆栈被过分扩展。可能是太多的嵌套的#if 语句、#includes 语句 (包括所有的递归的#include 语句),static块(有限制的括号) 或#define置换。
1.2.7 -7-不能打开include的文件:FileName
FileName 是不能打开的include文件的名字。,可以见flag fdi (见章节5.5 标志选项),选项 -i... (见章节5.7其它选项) 和章节13.2.1 INCLUDE 环境变量。
1.2.8 -8-未关闭的#if (位置)
一个#if (或 #ifdef 或 #ifndef) 没有遇到相应的#endif。位置是#if.的位置
1.2.9 -9-太多的#else在#if (位置)
一个给定的 #if 包含一个 #else,然后轮流流被紧跟另一个 #else 或一个 #elif。错误消息给出#if语句条件包含异常的行号
1.2.10 -10- 期望的字符串
字符串是期望的记号,期望的记号不能被发现。当一定的保留字没有被认出时,给出这条消息,例如:
int __interrupt f();
将收到一个 Expecting ';' message at the f ,因为它认为你想声明__interrupt。 改正的方法是建立一个新的保留字使用 +rw(__interrupt)。 同样,保证使用正确的编译器选项文件。见章节15.10 奇怪的编译器.
1.2.11 -11-超出大小范围
在#include l行确定的文件名的长度超过了FILENAME_MAX 字符。
1.2.12 -12-需要 < or “
-在一个#include I被检测出来后和宏置换被执行后,期望一个文件的规范格式<filename> 或 "filename"
1.2.13 -13-不好的类型
类型形容词例如long、unsigned 等等。不能应用到紧跟的类型。
1.2.14 -14- 符号 'Symbol' 以前定义过(位置)
符号被定义第二次。提供出以前定义的位置,如果这是一个暂定的定义(没有初始化),这个消息可以用+fmd flag抑制。(章节5.5Flag 选项).
1.2.15 -15-符号'Symbol'重新被声明(TypeDiff) (位置)
符号被以前声明过或在其它模块定义过(其它位置)的类型和在当前位置的声明的类型不同。参数TypeDiffr提供了类型怎么不同的进一步信息(见章节17. 信息).
1.2.16 -16-不认识的名字
一个# 指示符后没有跟着一个可认识的单词。如果这不是错误使用+ppw 选项(章节5.7其它选项).
1.2.17 -17-未被承认的名称
A non-parameter is being declared where only parameters should be.
1.2.18 -18-符号重新声明(TypeDiff) 和此位置冲突
一个符号被重新声明。参数TypeDiff 提供类型不同的进一步信息(见Chapter 17. 信息)。位置是先前定义的位置。
1.2.19 -19-无效的声明
一个类型独自的出现而没有相关的变量,类型不是struct、union 和 enum. 一个双分号能导致这个:
int x;;
1.2.20 -20-非法使用 =
一个函数声明后紧跟一个符号.
1.2.21 -21-期望{
对于不确定大小的数组的初始化必须以一个左括号开始。
1.2.22 -22-非法的操作符
发现一个一元操作符紧跟一个操作数,这个操作符不是一个post 操作符。
1.2.23 -23-期望“:”
-碰到一个 ? 操作符, o但是没有紧跟一个期望的 : 操作符。
1.2.24 -24-期望一个表达式,但是得到一个字符串
发现一个在一个表达式开始的操作符,但是它不是一个一元操作符。
1.2.25 -25-非法的常量
在一个字符常量中遇到太多的字符。
1.2.26 -26-期望一个表达式,但是得到一个字符串
1.2.27 -27-非法的字符(0xff)
源代码中发现非法的字符。消息中提供十六进制代码。 假定是一个空格。如果你使用奇怪的字符在标识符名称中,你将得到这个信息。你可以使用选项 - ident (见章节5.7其它选项.)
1.2.28 -28-重定义一个符号(符号位置)
给出的在以前(Location)声明的冒号前的标识符不是一个label.
1.2.29 -30-期望一个常量
期望一个常量,但是没有得到。可能是在case 关键字后, 数组维数、bit field 长度、 枚举指、#if 表达式等等.
1.2.30 -31-重新定义一个符号(Symbol' conflicts with Location)
数据对象或函数在此模块中以前定义过又被定义。
1.2.31 -32 -Field 大小 (member 'Symbol') 不能是0
给出的field 的长度是非正(0或负数).
1.2.32 -33- 非法常量
当一个8进制的常量包含数字8或9时,这是一个错误的形式。
1.2.33 -34- 非常量初始化
-在一个static数据项中发现非常量初始化.
1.2.34 -35- 初始化有副作用
在一个static数据项中发现有副作用的初始化.
1.2.35 -36- 重新定义存储类的符号 'Symbol' 和位置Location冲突
对象的存储类被改变.
1.2.36 -37- 枚举值'Symbol' 不一致(和位置Location冲突)
枚举值不一致.
1.2.37 -38-符号 'Symbol' 的偏移量不一致(Location)
很多类或结构比早期的声明出现在不同的位置(从结构开始的偏移量).可能因为数组维数从一个模块到另一个模块的改变.
1.2.38 -39- 重新定义符号 'Symbol' c和位置 Location 冲突
struct 或 union 被重新定义.
1.2.39 -40- 没有声明标识符'Name'
在表达式内, 一个标识符在以前没有被声明并且没有紧跟一个左括号. Name 是标识符的名称.
1.2.40 -41- 重新定义符号'Symbol'
一个宏或函数的参数被重新定义.
1.2.41 -42-期望一个语句
1.2.42 -43-变量 'Symbol'虚的类型
在一个实例的上下文中发现虚类型例如void类型.
1.2.43 -44-需要一个switch
在一个switch外出现case或default语句.
1.2.44 -45-错误的使用register
一个变量被声明为register ,但是它的类型不应该是register (例如一个函数).
1.2.45 -46-域类型应该是int
在结构中位域应该是类型为unsigned 或 int. 如果你的编译器允许其它类型,例如char, 那么抑制这条信息.
1.2.46 -47-错误的类型
一元减需要一个算术操作数.
1.2.47 -48-错误的类型
一元的 * 或左手边的指针 (->) 操作符需要一个指针操作数o.
1.2.48 -49-期望一个类型
在原型内只有类型被允许。原型是圆括号内有一系列的类型的函数声明. 处理器是在它检测到至少圆括号内的一个类型时,期望更多的类型或关闭的右圆括号.
1.2.49 -50-试图取非左值的地址
一元 & 操作符需要一个左值(对分配操作符左手边合适的值).
1.2.50 -51-期望整型
一元 ~ 期望一个整型(signed 或unsigned char、short、int、或long).
1.2.51 -52-期望一个左值
自动递减(--) 和自动递增(++) 操作符需要一个左值(对分配操作符左手边合适的值)。记住括号不产生左值。因此
++(char *)p;
按照ANSI标准是非法的。一些编译器允许这个结构,允许你使用+fpc 选项(指针括号是左值). (见章节5.5Flag选项.)
1.2.52 -53-期望一个标量
自动递减(--) 和自动递增(++) 操作符可能只应用于标量(算术和指针)或这些操作符定义的对象.
1.2.53 -54-被0除
常量0 w被用于除操作符 (/) 或取余操作符的右手边。
1.2.54 -55-坏类型
上下文需要一个标量、函数或结构(除非-fsa).
1.2.55 -56-坏类型
需要标量类型和指针的加/减操作符可能被加到指针中。
1.2.56 -57-坏类型
Bit 操作符( &, | 和 ^ ) 需要require 整型参数.
1.2.57 -58-坏类型
错误的参数给相关的操作符;这些通常需要两个标量和指针,不能和整数比较(除非常量0).
1.2.58 -59-坏类型
移位的数量必须是整数.
1.2.59 -60-坏类型
被移位的值必须是整数.
1.2.60 -61-坏类型
上下文需要一个布尔值. 布尔值必须是算术或指针形式.
1.2.61 -62-对操作符':'矛盾的的类型(TypeDiff)
? :的第二和第三个参数必须是一致的类型.
1.2.62 -63-期望一个左值
分配操作符期望它的第一个操作数是一个左值. 请注意a cast removes the lvaluedness of an expression. 参考flag +fpc 在章节5.5 Flag选项.
1.2.63 -64-类型不匹配(Context) (TypeDiff)
T在分配中有类型不匹配(或隐含分配,见Context)。TypeDiff 确定类型的区别. 当分配一些种类的指针时用选项 -epn, -eps, -epu, -epp (章节5.2错误禁止选项) 来抑制这个消息.
1.2.64 -65-期望一个成员名称
在一个 (.) 或 (->) 操作符后,一个成员名称应该出现.
1.2.65 -66-坏类型
用一个不允许的void 类型。如果一个void 类型放置在一个原型内,那么它必须只能是原型内的仅有类型。(参考错误号49.)
1.2.66 -67-不能从Type到 Type计算
试图非标量到整数计算.
1.2.67 -68-不能从Type到 Type计算
试图非标量到浮点数计算.
1.2.68 -69-不能从Type到 Type计算
涉及结构到结构或其它对象间的不匹配的转换.
1.2.69 -70-不能从Type到 Type计算
试图计算一个指针到一个非寻常的类型(非整数)间的计算.
1.2.70 -71-不能从Type到 Type计算
试图计算一个不允许转换的类型.
1.2.71 -72-错误的选项'String'
不能解释一个选项,选项在String中给出。
1.2.72 -73-错误的左操作数
T指针位于或在-> 或 . 操作符的前面。这些操作符期望一个表达式位于它们的左边。请注意关闭任何在这个位置的复杂的表达式的圆括号。
1.2.73 -74- Register的地址
试图应用地址操作符(&) 到一个存储类是一个register的变量.
1.2.74 -75-太晚改变大小(选项 'String')
在所有的或部分的模块被处理后,给出大小选项。确保在第一个模块被处理时或在任何模块被处理前的命令行上对目标的大小重新设置。
1.2.75 -76-不能打开文件String
String 是文件的名称。这个文件不能被打开而输出。这个文件正在被处理为PC-lint/FlexeLint 的目标模块。
1.2.76 -77-位域的地址不能取
C语言的规则仅仅允许f取整个字节的地址。
1.2.77 -78-typedef的符号'Symbol'在Location 使用表达式
符号被定义在一个typedef语句, 因此被认为是一个类型。后来发现在上下文中期望一个表达式。
1.2.78 -79-对 % 操作符错误的类型
% 操作符应该和整型格式一起使用。
1.2.79 -80 -使用省略号不是严格的ANSI标准
省略号被用于原型,仅仅在一系列的原型后没有跟在一系列的标识符后。一些编译器支持这个扩展。如果你希望是用这个特性,抑制这个信息。
1.2.80 -81- 结构/联合不允许在等式比较中
两个struct 或union被用于比较操作,如 == 或 != 。这在ANSI 标准中是不允许的,如果你的编译器支持这个,抑制这个信息。
1.2.81 -82 -返回 <exp>; 非法的void 函数
ANSI 标准不允许一个返回 void 函数的格式的表达式。如果你试图转换void为 return (void)f(); ,而且你的编译器允许,可以抑制这个信息。
1.2.82 -83- 在减操作中不兼容的指针类型
两个指针相减,指向的类型是不同的。你将使PC-lint/FlexeLint 去忽略指针中轻微的区别,通过使用一个或多个-ep... 选项。描述在章节5.2 错误抑制选项.
1.2.83 -84-sizeof 目标是零或目标没有定义
一个 sizeof 返回一个0 值。如果目标没有定义或没有完整定义,这将会发生。确保当你使用sizeof时,对目标是在范围内完整定义。
1.2.84 -85- 数组 'Symbol' 有 0维
一个数组被声明在上下文中没有一个维数,需要一个非零的维数。
1.2.85 -86- 结构 'Symbol' 没有数据元素
尽管在C++中合法,但是在C中却是非法的。
1.2.86 -87-对 #ifdef 或#ifndef 表达式太复杂
在C的规则中,应该有一个单独的标识符紧跟 #ifdef 或 #ifndef。你可以提供一个有效的结构化的C (或 C++) 注释。
1.2.87 -88- 符号 'Symbol' 是一个有空元素的数组
一个数组被声明(在一个C模块中)为它的元素每个都是0长度,尽管在C++中是合法的名单在世C中是不允许的。
1.2.88 -90- 选项 'String' 仅仅合适在一个lint 注释中
指示的选项不合适在一个命令行或一个.lnt 文件中。例如:如果 -unreachable 被给出在命令行,你将得到这个信息。
1.2.89 -91- 行超过整型字符 (使用 +linebuf)
从输入文件中读取的一行比预期的要长。默认的行缓冲的大小是 600 个字符。每次你使用 +linebuf 选项,你将翻番这个大小。
1.2.90 -92- 负数数组维数或位域长度
一个负数的数组维数或数组长度是不被允许的。
1.2.91 -93-在宏的字符串参数内新行是不被允许的
在一个宏调用中包含一个被切割为不只一行的字符串。例如:
A( "Hello
World" );
将触发这个信息。如果一些编译器接受这种结构,你可以抑制这个信息。但是最好把字符串常量放置于一行:
A( "Hello World" );
将更好。
1.2.92 -101- 期望一个标识符
当处理一个函数声明时,遇到一个参数说明,不是标识符,尽管以前的参数被确定为一个标识符。这是混合旧格式声明和新格式声明的函数,这是不允许的。例如:
void f(n,int m)
将发布这个信息。
1.2.93 -102- 非法的参数确定
在一个函数声明内,一个参数被确定为或者一个标识符,或者一个跟着声明的类型。
1.2.94 -103 -不期望的声明
在一个原型后,仅仅只能是一个逗号、分号、右括号或左brace。如果你省略了一个在一个声明后的终结符,或如果你混合旧格式参数声明和新格式原型时,这个错误可能发生。
1.2.95 -104-冲突的类型
发现两个连续的冲突类型,例如 int 紧跟一个double。去除其中一个类型。
1.2.96 -105- 冲突的修饰符
发现两个连续的冲突修饰符,例如 far 紧跟一个near。去除其中一个修饰符。
1.2.97 -106- 非法常量
在一个预处理器表达式中发现一个字符串常量,例如:
#if ABC == "abc"
这个表达式应该是一个整型表达式。
1.2.98 -107- 标签 'Symbol' (Location) 没有定义
在一个goto中,Symbol 在给给出的位置Location出现,但是没有相应的label。
1.2.99 -108- 无效的上下文
遇到一个continue 或 break 语句,没有合适的上下文,例如: for, while, 或 do 循环,多仅仅对break 语句,相应的 switch 语句。.
1.2.100 -110- 试图给一个void分配
试图分配一个值给一个指定的目标 (可能通过一个指针) 为 void.
1.2.101 -111- 分配给一个const目标
一个目标被声明为 const 被分配给一个值。例如, 如果 p 是一个指针,指向一个 const int ,那么分配到 *p 将导致这个错误。
1.2.102 -113- 不一致的枚举声明
在一个枚举内的系列成员(或它们的值)和另一个同名的枚举量(通常在另一个模块)不一致。
1.2.103 -114-对tag 'Symbol'不一致的结构声明
在一个结构(或联合)内的系列成员(或它们的值)和另一个同名的枚举量(通常在另一个模块)不一致。
1.2.104 -115- 结构/联合没有定义
结构或联合的引用需要一个定义,但是在范围内没有定义。例如,一个 p->a 的引用,这里 p 是一个指针,指向一个结构,但是此结构还没有在当前模块中被定义。
1.2.105 -116- 不合适的存储类
一个不同于register的存储类在一个代码段中被给出,专注于声明参数。
1.2.106 -117-不合适的存储类
一个存储类在函数外被给出,表示 auto 或 register。这个存储类仅仅适合于函数内。
1.2.107 -118-原型参数太少
一个函数提供的参数少于范围内原型指示的个数。
1.2.108 -119-原型参数太多
一个函数提供的参数多于范围内原型指示的个数。
1.2.109 -122-数字(字符)对基数太大
指示的字符在一个常量中被发现,并以零开始。例如, 08 在一些编译器中被认为是 8 ,但是它应该是 010 或 8。
1.2.110 -123-有参数在Location 定义的宏 'Symbol' ,这只是一个告警
有参数的宏被随后识别,没有一个其次的 '('。这是合法的,但是可能是个疏忽。要抑制这个信息是难得的 (使用 -e123),因为一些编译器允许,例如,宏 max() 和变量 max共存。(见章节错误123使用min或max.).
1.2.111 -124-指针指向void是不允许的
这包括减、加和关系操作符 (> >= < <=).
1.2.112 -125-太多的存储类确定符
发现多于一个的存储类确定符(static、extern, typedef, register 或 auto),只允许一个。
1.2.113 -126-不一致的结构定义 'Symbol'
模块间的结构(或 union 或 enum)定义不一致。当处理一个lob时,发现不一致。行号信息在这个信息中不存在。改变这个结构以便成员信息保持一致。
1.2.114 -127-非法常量
一个空字符常量 ('') 被发现。
1.2.115 -128- 指针指向函数不允许
指向函数的指针在一个算术上下文中被发现,例减、加或关系操作符(> >= < <=)。
1.2.116 -129- 期望声明,标识符 'Symbol'被忽略
在一个上下文中期望一个声明,但是发现一个标识符,甚至,标识符不能跟着一个'(' 或一个'['
1.2.117 -130-期望一个整型类型
在一个switch 语句中的表达式, 必须是int 的一些变种(可能是 long 或 unsigned) 或一个 enum。
1.2.118 -131-在位置Location 调用宏'Symbol' 时语法错误
当一个宏的参数(象函数的宏) 被调用,而且提供的是不正确的参数个数,这时这个信息被发布。 Location 是宏调用的开始的位置。这个可能很有用,因为错误的宏调用能延续到很多行。
1.2.119 -132- 期望函数定义
在圆括号间的标识符的函数声明是一个旧形式函数定义的开始(K&R 形式)。这通常紧跟可选的声明和左大括号信号函数体的开始。或者用类型代替标识符,或者用函数体完成函数。
1.2.120 -133- 对集合体太多的初始化器
在一个关闭括号的初始化器内,比集合体的元素有更多的项。
1.2.121 -134- 丢失初始化器
期望一个初始化器,但是仅仅存在一个逗号。
1.2.122 -135- 假定在初始化器中是逗号
在两个初始化器间丢失一个逗号,例如:
int a[2][2] = { { 1, 2 } { 3, 4 } };
在第一个由大括号后丢失一个逗号。
1.2.123 -136- 非法的宏名称
ANSI 标准限制使用特定名称的宏。定义在限制列表中。
1.2.124 -137- 在switch内常量Symbol'被使用了两次
在一个switch 语句内,指示的常量被作为一个case使用了两次。目前只有记数类型被检查重复发生。
1.2.125 -138- 不能增加双亲 'Symbol' 到强类型 String;创建循环
试图增加一个强类型双亲到一个typedef 类型。这个试图或者是明显的(使用选项-strong)或者是隐含的 使用一个 typedef 到一个已知的强类型。这个试图将导致在一个强双亲关系中的循环。这个循环是简单地不可忍受的。
1.2.126 -139-不能对函数进行sizeof 计算
试图对函数进行sizeof 计算。
1.2.127 -140 -类型出现在一个修饰符后
微软的修饰符,例如far、_near、__huge、_pascal等等修改声明符它直接的权限。因此不应该出现在类型前。例如,你应该写 int pascal f(void); 而不是 pascal int f(void);。注意:const、volatile 和微软的修饰符不同。它们可以出现在类型的前面或后面。在报告错误后,试图处理修饰符作为程序员可能有意的。参见+fem 标志在章节5.5标志选项.
1.2.128 -141-下列选项有太多的元素:'String'
指示的选项 (以'String'给出)太大。可能组成的项目列表有太大的项目。你应该分解大的选项为两个或多个更小的选项,总和和一个大选项是相等的。
1.2.129 -144-对符号'Symbol',不存返回值,和Location 比较
试图对函数Symbol 使用不存在的返回值。函数在以前被声明为void。
1.2.130 -145- 在操作符前期望一个类型,假定是void
在一个上下文中期望一个类型,但是没有发现类型,宁愿遇到一个操作符 '*' 或 '&' 。关键字 void w被假定有这个操作符的优先级。
1.2.131 -146- 假定一个二进制常量
一个格式为 0b... 的常量被遇到。这被认为是一个二进制常量。例如, 0b100 代表值 4。如果你的编译器支持二进制常量,你可以抑制这个信息。
1.2.132 -147- sizeof 只是获得一个参数
格式为sizeof(a,b) 的表达式被检测到。第二个参数是非标准的,如果你的编译器使用第二个参数,可以抑制这个信息。
1.2.133 -148- 成员 'Symbol' 在Location以前声明过
指示的成员在同样的结构或联合中以前声明过。尽管函数的重新声明可能看起来是良性的,但是这是在语言的规则中不允许的,其中一个声明应该被去除。
1.2.134 -149- C++ 构造'String' 在代码中发现
一个非法的结构被在C代码中发现。它看起来象适合于C++。
1.2.135 -150- 记号'String' 不期望 String
遇到一个不期望的记号。发生后,被标识为第二个信息的参数。
1.2.136 -151-记号 'Name' 和抽象类型不一致
在一个上下文中,抽象类型被允许在一个转换内或一个sizeof 后,在开始分析抽象类型后,发现一个标识符。例如:
x = (int y) z;
1.2.137 -152- 丢失Lob 基础文件 'file name'
指示的文件被确定为一个lob 的基础文件,通过选项 -lobbase()产生。在输出中,如果这个lob基础文件丢失,给出这个信息。情形是可纠正的,通过简单的产生丢失的 lob 输出。在makefile中给出合适的从属这可能是一个问题 。在输出中,最可能导致这个信息的是基础文件是过时的。一个lob文件中的无用代码信息被读取,不匹配一个早嵌入在基础文件中的相似的代码。输入 lob 文件一个被认为错误,应该被重新产生。见章节7.lint目标模块
1.2.138 -153- 不能创建临时文件
当基于一个lob基础文件产生一个lob 输出文件时产生这个信息,它被首先写入一个临时文件,这个临时文件通过C库函数 tmpnam()产生。
1.2.139 -154- 不能估计类型'String', 假定为int
信息中的String 是第二个参数,或者是一个printf_code 选项,或者是一个scanf_code 选项。当使用了,它被认为是一个类型,不幸的是,这个类型不能被标识。
1.2.140 -155- 在一个表达式内忽略 {…}系列,假定为0
在一个表达式内的braced 系列是某些编译器(特别是GCC)的非标准的扩展。在内,我们对待这个braced 系列为等于零的常量。如果你仅仅抑制这个信息,这意味着我们可以lint 这个结构。
1.3 内部错误
编号为200-299的一些矛盾被FlexeLint/PC-lint 发现。这些可能不是用户的错误,可能是Gimpel Software的问题。
1.4 致命错误
这些错误是通常致命的,限制这些错误被检查出来是不可能的。但是,这些标记有‘*’的错误可以被限制显示,例如: -e306
1.4.1 -301-堆栈溢出
当处理声明时,有一个堆栈溢出。发现大约50 个嵌套的声明。例如,如果一个 ' /' 紧跟 50 个连续的'*' 被引入一个盒子似的注释,而且如果 '/' 被省略 ,将产生这个信息。
1.4.2 -302- 超过可用的内存
主内存被耗尽。
1.4.3 -303- 字符串太长 (尝试 +macros)
一个单独的 #define 定义或宏调用超过一个内部的限制 (超过 409字符)。诊断指出的问题可以被使用一个选项校正。
1.4.4 -304-被破坏的目标文件,代码Integer, 符号=String
一个PC-lint/FlexeLint 目标文件是明显的被破坏的。请删除这个目标模块,并重新创建它,使用选项 -oo .见章节7.3 产生一个LOB. 特殊的代码标识符号和符号名列表是可选的信息后缀作为帮助技术支持诊断问题。
1.4.5 -305- 不能打开模块 'file name'
file name 是文件名称。这个名称的模块不能为读被打开。可能你拼写错误名称。
1.4.6 -306-* 以前遇到的模块 'FileName'
FileName 是模块的名称。这个名称的模块以前遇到过。这可能是用户的一个失误。
1.4.7 -307- 不能打开间接文件 'FileName'
FileName 是间接文件的名称。这个名称的间接文件(结尾是 .lnt) 不能为读被打开。
1.4.8 -308- 不能写到标准输出
stdout 被发现等于NULL。 这是最不寻常的。
1.4.9 -309-* #error ...
#error 指示被遇到。省略号反映最初的行。通常地处理在这点中断。如果你设置 fce (连续#error) 标志。处理将继续。
1.4.10 -310-声明太长:'String...'
发现一个单独的声明对于内部的缓冲太长(差不多2000 个字符)。当试图使用选项-o... 写出到声明时发生。声明的最初的30 个字符给出在String。代表性地,这通过一个非常长的结构,子结构是没有标签的导致的。首先标识导致困难的声明。如果一个 struct 或 union, 分配给一个没有名称的子结构或子联合。一个typedef 能被用于减少这个声明的大小。
1.4.11 -312- lob是荒废的或外来的版本号
一个lob被PC-lint/FlexeLint以前的或不同的版本产生。删除这个 .lob 文件,使用你的新版本的PC-lint/FlexeLint重新创建它。
1.4.12 -313- 太多文件
PC-lint/FlexeLint能处理的文件的数量超过内部的限制。FlexeLint 用户可以重新编译它的系统以增加这个限制。在 custom.h内寻找符号 FSETLEN。 目前,文件的数量限制到6400。
1.4.13 -314-* 以前使用的 .lnt 文件:FileName
指定名称的间接文件以前遇到过。如果这不是一次事故,你可以抑制这个信息。
1.4.14 -315- 超过信息限制 (见 -limit)
超过信息的最大量。通常没有限制除非强加限制使用选项 -limit(n) (见章节5.7 其它 选项.)
1.4.15 -316- 写文件"file name" 时错误
给定的文件不能输出打开。
1.4.16 -321- 声明堆栈溢出
当处理一个声明时在堆栈使用于特定的数组、指针、函数或引用修饰符时发生堆栈溢出。
1.4.17 -322-* 不能打开包含文件 FileName
FileName 是不能被打开的包含文件的名称。目录寻找通过选项:-i (见章节 5.7其它选项.)+fdi (章节5.5标志选项) 和 INCLUDE 环境变量控制。这是一个可以禁止的致命信息。如果使用选项-e322 ,错误信息 7 将踢掉砸开。一个诊断将被发布,但是处理将继续。
1.4.18 -323-记号String 太长
试图为以后的重用存储一个记号,超过一个固定的大小缓冲。(通过大小M_TOKEN 来控制)。
1.4.19 -324-太多的符号Integer
遇到太多的符号。打断内部的限制。
1.4.20 -325-不能重新打开文件 'file name'
在大量的嵌套的include的情况下,在外部边缘的文件需要在一个新的被打开前被关闭。这些外部文件然后需要被重新打开。当试图重新打开这样的一个文件时,发生一个错误。
1.5 C告警信息
1.5.1 -401-标示符“Symbol”之前并没有被声明为静态存储类型
此符号之前不是以静态存储类型的形式声明,此种形式从技术上违背了ANSI标准,某些编译器会默认此种形式,认为此符号是静态。
1.5.2 -402-静态函数“Symbol” (Location)没有被定义
在当前模块中被引用的此静态函数没有被定义,仅仅进行了声明。
1.5.3 -403-静态符号“Symbol”被异常类型的修改者修改
某些类型修改者,如,修改者类型为_export,与静态存储类型不一致。
1.5.4 -404-在文件 'FileName' 中结构没有定义完成
结构,联合体,枚举类型需要在同一个头文件中被定义完成。不要跨文件定义和声明结构,联合体,枚举类型。
1.5.5 -405-#if之类的宏开关没有在同一个头文件'FileName'被关闭
错误如:
文件a
#if _LOGIC_BOARD == _LOGIC_CHMHDR_CPUF
...
文件b
#elif _LOGIC_BOARD == _LOGIC_CHMHDR_CPUR
...
#endif
1.5.6 -406-注释没有在同一个头文件'FileName'被关闭。
注释没有在同一个头文件被关闭。错误如:
文件a
/* **************************************
文件结束
1.5.7 -407-不一致地使用tag 'Symbol' ,在 Location 冲突
同一个标示符,在不同的位置被定义认为不同的类型,如联合体,结构体,枚举类型。
例如:
struct tag *p;
union tag *q;
1.5.8 -408-switch表达式中,类型不匹配
表达式中的case和switch语句类型没有达成同一 如:
typedef enum
{
HRPDDEFS_ALPHA = 0,
HRPDDEFS_BETA,
HRPDDEFS_GAMMA,
HRPDDEFS_NUMBER_OF_SECTORS
} HRPDDEFS_SectorType;
HRPDDEFS_SectorType m_tSector;
switch (m_tSector)
{
case 1:
...
break;
case 4:
...
break;
default:
...
return FALSE;
}
1.5.9 -409-期望是一个指针或者数组
此种类型i[...]的表达式中,发现i是一个整型变量,这种情况可能是合法的,与脚本操作符有关。例如:i是整型,a是数组,那么i[a]是合法的,但属于异常。如果这种情况是你编码风格,请屏蔽之。
1.5.10 -410-size_t 不是fzl或者fzu类型,使用 'Type'
如果你以前试图设置过sizeof选项为+fzl, -fzl, or -fzu,后
展开阅读全文