导航:首页 > 源码编译 > 编译参数会导致编译报警被关闭

编译参数会导致编译报警被关闭

发布时间:2022-09-14 20:20:08

Ⅰ printf打印strlen(ch2),编译警告,是为什么

strlen函数的返回值是个 unsigned int ,而%d是int格式输出,所以会有警告,用%u格式就不会有警告了:
printf("strlen(ch2)=%u",strlen(ch2));

Ⅱ 我的编译器vc++6.0出现了下面的问题:出现一个error,是编译器错误么

代码将产生此错误信息,如果它引用了(如函数,变量或标签) ,该连接器无法找到所有的图书馆和目标文件它的搜索。一般情况下,有两个原因发生此错误:什么代码要求不存在(符号拼写错误或使用了错误的情况下,例如) ,或要求的代码错误的(您使用的是混合版本图书馆?一些从一个版本的产品,另一些从另一个版本) 。

无数种编码和编译错误可能会导致LNK2001 。有几个具体原因下面列出,一些有联系的更详细的解释。
编码问题

不匹配的情况下在您的代码或模块定义( 。画质)文件可能会导致LNK2001 。例如,如果您命名一个变量“ var1 ”在一个C + +源文件,并尝试使用它作为“ VAR1 ”在另一个,你会收到此错误。解决办法是完全匹配的情况下,文中所有提及。

一个项目,使用功能内嵌尚未确定了职能。 cpp文件,而不是在头文件可能会导致LNK2001 。

如果您使用的是C + +中,请确保使用外部的“ C ”时调用C函数的C + +程序。通过使用外部的“ C ”您的使用武力的C命名约定。了解编译器开关一样/总蛋白或/锝武力将文件编译为一个C ( /技术合作)或C + + ( /总蛋白)档案不管文件扩展名,或者您可能会得到不同的函数名比您预期的。

试图参考功能或数据不具备的外部联系的原因LNK2001 。 C + +中,内置的功能和构造数据内部的联系,除非明确指定为外部。

丢失函数机构或变量会导致LNK2001 。刚刚一个函数原型或外部宣言将使编译继续,没有错误,但链接将无法解决您的电话的地址或参考变量,因为没有功能代码或变量空间保留。

姓名装修采用参数的函数进入最后装饰功能名称。调用一个函数的参数类型不匹配是在函数声明可能会导致LNK2001 。

错误包括原型将导致编译预期功能的机构,不提供。如果您同时拥有一类和非类执行函数F ,小心C + +的范围内解决的规则。

当使用C + +中,一定要包括执行特定功能的一类,而不只是一个原型的类的定义。

试图调用一个纯虚函数的构造函数或析构函数的抽象基类将导致LNK2001因为按照定义一个纯虚函数没有基类执行。

全球唯一的函数和变量是公开的。
职能宣布与静态修饰的定义文件的范围。静态变量具有相同的限制。试图访问任何静态变量以外的文件,他们被宣布可能会导致出现一个编译错误或LNK2001 。

一个变量的函数内宣布(一局部变量)只能使用范围之内的这一职能。

C + +的全球静态常量有联系。这是不同于c.如果您尝试使用全球不断在C + +的多个文件你错误LNK2001 。一个办法是包括常量初始化的一个头文件,其中包括在您的头。 cpp文件必要时,就好像它是一个函数原型。另一种办法是使变量非恒定和使用时参考不断评估它。

Ⅲ vc编译时的警告会导致错误码

Ambiguous operators need parentheses
不明确的运算需要用括号括起

Ambiguous symbol ``xxx``
不明确的符号

Argument list syntax error
参数表语法错误

Array bounds missing
丢失数组界限符

Array size toolarge
数组尺寸太大

Bad character in paramenters
参数中有不适当的字符

Bad file name format in include directive
包含命令中文件名格式不正确

Bad ifdef directive synatax
编译预处理ifdef有语法错

Bad undef directive syntax
编译预处理undef有语法错

Bit field too large
位字段太长

Call of non-function
调用未定义的函数

Call to function with no prototype
调用函数时没有函数的说明

Cannot modify a const object
不允许修改常量对象

Case outside of switch
漏掉了case 语句

Case syntax error
Case 语法错误

Code has no effect
代码不可述不可能执行到

Compound statement missing{
分程序漏掉"{"

Conflicting type modifiers
不明确的类型说明符

Constant expression required
要求常量表达式

Constant out of range in comparison
在比较中常量超出范围

Conversion may lose significant digits
转换时会丢失意义的数字

Conversion of near pointer not allowed
不允许转换近指针

Could not find file ``xxx``
找不到XXX文件

Declaration missing ;
说明缺少";"

Declaration syntax error
说明中出现语法错误

Default outside of switch
Default 出现在switch语句之外

Define directive needs an identifier
定义编译预处理需要标识符

Division by zero
用零作除数

Do statement must have while
Do-while语句中缺少while部分

Enum syntax error
枚举类型语法错误

Enumeration constant syntax error
枚举常数语法错误

Error directive :xxx
错误的编译预处理命令

Error writing output file
写输出文件错误

Expression syntax error
表达式语法错误

Extra parameter in call
调用时出现多余错误

File name too long
文件名太长

Function call missing )
函数调用缺少右括号

Fuction definition out of place
函数定义位置错误

Fuction should return a value
函数必需返回一个值

Goto statement missing label
Goto语句没有标号

Hexadecimal or octal constant too large
16进制或8进制常数太大

Illegal character ``x``
非法字符x

Illegal initialization
非法的初始化

Illegal octal digit
非法的8进制数字

Illegal pointer subtraction
非法的指针相减

Illegal structure operation
非法的结构体操作

Illegal use of floating point
非法的浮点运算

Illegal use of pointer
指针使用非法

Improper use of a typedefsymbol
类型定义符号使用不恰当

In-line assembly not allowed
不允许使用行间汇编

Incompatible storage class
存储类别不相容

Incompatible type conversion
不相容的类型转换

Incorrect number format
错误的数据格式

Incorrect use of default
Default使用不当

Invalid indirection
无效的间接运算

Invalid pointer addition
指针相加无效

Irrecible expression tree
无法执行的表达式运算

Lvalue required
需要逻辑值0或非0值

Macro argument syntax error
宏参数语法错误

Macro expansion too long
宏的扩展以后太长

Mismatched number of parameters in definition
定义中参数个数不匹配

Misplaced break
此处不应出现break语句

Misplaced continue
此处不应出现continue语句

Misplaced decimal point
此处不应出现小数点

Misplaced elif directive
不应编译预处理elif

Misplaced else
此处不应出现else

Misplaced else directive
此处不应出现编译预处理else

Misplaced endif directive
此处不应出现编译预处理endif

Must be addressable
必须是可以编址的

Must take address of memory location
必须存储定位的地址

No declaration for function ``xxx``
没有函数xxx的说明

No stack
缺少堆栈

No type information
没有类型信息

Non-portable pointer assignment
不可移动的指针(地址常数)赋值

Non-portable pointer comparison
不可移动的指针(地址常数)比较

Non-portable pointer conversion
不可移动的指针(地址常数)转换

Not a valid expression format type
不合法的表达式格式

Not an allowed type
不允许使用的类型

Numeric constant too large
数值常太大

Out of memory
内存不够用

Parameter ``xxx`` is never used
能数xxx没有用到

Pointer required on left side of ->
符号->的左边必须是指针

Possible use of ``xxx`` before definition
在定义之前就使用了xxx(警告)

Possibly incorrect assignment
赋值可能不正确

Redeclaration of ``xxx``
重复定义了xxx

Redefinition of ``xxx`` is not identical
xxx的两次定义不一致

Register allocation failure
寄存器寻址失败

Repeat count needs an lvalue
重复计数需要逻辑值

Size of structure or array not known
结构体或数给大小不确定

Statement missing ;
语句后缺少";"

Structure or union syntax error
结构体或联合体语法错误

Structure size too large
结构体尺寸太大

Sub scripting missing ]
下标缺少右方括号

Superfluous & with function or array
函数或数组中有多余的"&"

Suspicious pointer conversion
可疑的指针转换

Symbol limit exceeded
符号超限

Too few parameters in call
函数调用时的实参少于函数的参数不

Too many default cases
Default太多(switch语句中一个)

Too many error or warning messages
错误或警告信息太多

Too many type in declaration
说明中类型太多

Too much auto memory in function
函数用到的局部存储太多

Too much global data defined in file
文件中全局数据太多

Two consecutive dots
两个连续的句点

Type mismatch in parameter xxx
参数xxx类型不匹配

Type mismatch in redeclaration of ``xxx``
xxx重定义的类型不匹配

Unable to create output file ``xxx``
无法建立输出文件xxx

Unable to open include file ``xxx``
无法打开被包含的文件xxx

Unable to open input file ``xxx``
无法打开输入文件xxx

Undefined label ``xxx``
没有定义的标号xxx

Undefined structure ``xxx``
没有定义的结构xxx

Undefined symbol ``xxx``
没有定义的符号xxx

Unexpected end of file in comment started on line xxx
从xxx行开始的注解尚未结束文件不能结束

Unexpected end of file in conditional started on line xxx
从xxx 开始的条件语句尚未结束文件不能结束

Unknown assemble instruction
未知的汇编结构

Unknown option
未知的操作

Unknown preprocessor directive: ``xxx``
不认识的预处理命令xxx

Unreachable code
无路可达的代码

Unterminated string or character constant
字符串缺少引号

User break
用户强行中断了程序

Void functions may not return a value
Void类型的函数不应有返回值

Wrong number of arguments
调用函数的参数数目错

``xxx`` not an argument
xxx不是参数

``xxx`` not part of structure
xxx不是结构体的一部分

xxx statement missing (
xxx语句缺少左括号

xxx statement missing )
xxx语句缺少右括号

xxx statement missing ;
xxx缺少分号

xxx`` declared but never used
说明了xxx但没有使用

xxx`` is assigned a value which is never used
给xxx赋了值但未用过

Zero length structure
结构体的长度为零

Ⅳ 程序编译错误不知道是什么原因

不能通编译过的程序实际上还不是合法的程序,因为它不满足C语言对于程序的基本要求。

检查语法错误的第一要义:集中力量检查系统发现的第一个错误,弄清并改正它。

在编译过程中系统发现的错误主要有两类:基本语法错误和上下文关系错误。这些错误都在表面上,可以直接看得见。也是比较容易弄清,比较容易解决的。关键是需要熟悉C语言的语法规定和有关上下文关系的规定,按照这些规定检查程序正文,看看存在什么问题。

编译中系统发现错误都能指出错误的位置。不同系统在这方面的能力有差异,在错误定位的准确性方面有所不同。有的系统只能指明发现错误的行,有的系统还能够指明行内位置。

一般说,系统指明的位置未必是真实错误出现的位置。通常情况是错误出现在前,而系统发现错误在后,因为它检查到实际错误之后的某个地方,才能确认出了问题,因此报出错误信息。要确认第一个错误的原因,应该从系统指明的位置开始,在那里检查,并从那里开始向前检查。

系统的错误信息中都包含一段文字,说明它所认定的错误原因。应该仔细阅读这段文字,通常它提供了有关错误的重要线索。但也应该理解,错误信息未必准确,有时错误确实存在,但系统对错误的解释也可能不对。也就是说,在查找错误时,既要重视系统提供的错误信息,又不应为系统的错误信息所束缚。

发现了问题,要想清楚错误的真正原因,然后再修改。不要蛮干。在这时的最大诱惑就是想赶快改,看看错误会不会消失。但是蛮干的结果常常是原来的错误没有弄好,又搞出了新的错误。

另一个值得注意的地方:程序中的一个语法错误常常导致编译系统产生许多错误信息。如果你改正了程序中一个或几个错误,下面的弄不清楚了,那么就应该重新编译。改正一处常常能消去许多错误信息行。

解决语法错误

常见语法错误:

1)缺少语句、声明、定义结束的分号。

2)某种括号不配对。C语言中括号性质的东西很多,列举如下:
( ), [ ], { }, ' ', " ", /* */
在不同位置的括号不配对可能引起许多不同的错误信息。

3)关键字拼写错误。

较难认定的典型错误:

1)宏定义造成的错误。这种东西不能在源程序文件中直接看到,是在宏替换之后出现的。常见的能引起语法错误的宏定义错误:宏定义中有不配对的括号,宏定义最后加了不该有的分号,……

解决上下文关系错误

1)变量没有定义。产生这个问题的原因除了变量确实没有大意外,还可能是变量的拼写错误,变量的作用域问题(在不能使用某个变量的地方想去用那个变量)。

2)变量重复定义。例如在同一个作用域里用同样名字定义了两个变量,函数的局部变量与参数重名等。

3)函数的重复定义。可能是用同一个名字定义了两个不同的函数。或者是写出的函数原型在类型上与该函数的定义不相符。有时没有原型而直接写函数调用也可能导致这种错误信息,因为编译程序在遇到函数调用而没有看到函数原型或函数定义时,将给函数假定一个默认原型。如果后来见到的函数定义与假定不符,就会报告函数重复定义错误。

4)变量类型与有关运算对运算对象或者函数对参数的要求不符。例如有些运算(如 %)要求整数参数,而你用的是某种浮点数。

5)有些类型之间不能互相转换。例如你定义了一个结构变量,而后要用它给整数赋值。系统容许的转换包括:数值类型之间的转换,整数和指针之间的转换,指针之间的转换。其余转换(无论是隐含的,还是写出强制)都不允许。参见《C语言程序设计》(K&R)197-199页。

如何看待编译警告

当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息。警告信息可能意味着程序中隐含的大错误,也可能确实没有问题。对于警告的正确处理方式应该是:尽可能地消除之。对于编译程序给出的每个警告都应该仔细分析,看看是否真的有问题。只有那些确实无问题的警告才能放下不管。

注意:经验表明,警告常常意味着严重的隐含错误。

常见警告:

1)(局部自动)变量没有初始化就使用。如果对局部指针变量出现这种情况,后果不堪设想。对于一般局部自动变量,没有初始化就使用它的值也不会是有意义的。

2)在条件语句或循环语句的条件中写了赋值。大部分情况是误将 == (等于判断)写成 = 了。这是很常见的程序错误,有些编译程序对这种情况提出警告。

Ⅳ 西门子s7-200程序编译成功 下载到plc 报警指示灯亮 是什么原因

编译成功了只能说明没有语法,指令的错误。但是实际数据参数等不一定是对的,如果错了,那么下载到PLC中运行就会出错并报警。在线监视一下,看看是哪个网络或者指令参数的错误,改正就好了。
望采纳。。。。。。。

Ⅵ C语言编译、连接的各种错误

编译器错误 C2001 错误消息
常数中有换行符
字符串常数不能继续到第二行,除非进行下列操作:
•用反斜杠结束第一行。
•用一个双引号结束第一行上的字符串,并在下一行用另一个双引号开始该字符串。
用 \n 结束第一行是不够的。
编译器错误 C2002 错误消息
无效的宽字符常数
多字节字符常数是非法的。
通过检查下面的可能原因进行修复
1.宽字符常数包含的字节比需要的多。
2.未包括标准头文件 STDDEF.h。
3.宽字符不能与一般字符串连接。
4.宽字符常数之前必须是字符“L”:
编译器错误 C2003 错误消息
应输入“defined id”
标识符必须跟在预处理器关键字之后。
编译器错误 C2004 错误消息
应为“defined(id)”
标识符必须出现在预处理器关键字之后的括号中。
也可能由于为 Visual Studio .NET 2003 进行的编译器一致性工作生成此错误:在预处理器指

令中缺少括号。
如果预处理器指令缺少右括号,则编译器将生成一个错误。
编译器错误 C2005 错误消息
#line 应跟一个行号,却找到“token”
#line 指令后面必须跟行号。
编译器错误 C2006 错误消息
“directive”应输入文件名,却找到“token”
诸如 #include 或 #import 等指令需要文件名。若要解决该错误,请确保 token 是一个有效

文件名。并且将该文件名放在双引号或尖括号中。
编译器错误 C2007 错误消息
#define 语法
#define 后未出现标识符。若要解决该错误,请使用标识符。
编译器错误 C2008 错误消息
“character”: 宏定义中的意外
该字符紧跟在宏名之后。若要解决该错误,宏名之后必须有一个空格。
编译器错误 C2009 错误消息
宏形式“identifier”重复使用
宏定义的形参表多次使用该标识符。宏的参数列表中的标识符必须是唯一的。
编译器错误 C2010 错误消息
“character”: 宏形参表中的意外
该字符在宏定义的形参表中使用不正确。移除该字符以解决该错误。
编译器错误 C2011 错误消息
“identifier”:“type”类型重定义
该标识符已定义为 type 类型。如果多次将某个类型库导入同一个文件,也可能生成 C2011


编译器错误 C2012 错误消息
在“<”之后缺少名称
#include 指令缺少所需的文件名。
编译器错误 C2013 错误消息
缺少“>”
#include 指令缺少右尖括号。添加右尖括号以解决该错误。
编译器错误 C2014 错误消息
预处理器命令必须作为第一个非空白空间启动
预处理器指令的 # 符号必须是非空白行上的第一个字符。
编译器错误 C2015 错误消息
常数中的字符太多
一个字符常数包含的字符多于两个。标准字符常数只能包含一个字符,长字符常数只能包含两

个字符。
转义序列(如 \t)将被转换为单个字符。
当使用 Microsoft 扩展将字符常数转换为整数时,也可能发生 C2015。
编译器错误 C2017 错误消息
非法的转义序列
转义序列(如 \t)出现在字符或字符串常数之外。
当 stringize 运算符与包括转义序列的字符串一起使用时会发生 C2017。
编译器错误 C2018 错误消息
未知字符“hexnumber”
源文件包含一个意外的 ASCII 字符,该字符由其十六进制数标识。若要解决该错误,请移除

该字符。
编译器错误 C2019 错误消息
应找到预处理器指令,却找到“character”
该字符跟在 # 符号的后面,但它不是预处理器指令的第一个字母。
编译器错误 C2020 错误消息
“member”:“class”成员重定义
从基类或结构继承的成员被重定义。不能重定义继承成员,除非它在基类中被声明为 virtual


编译器错误 C2021 错误消息
应输入指数值,而非“character”
用作浮点常数的指数的字符是一个无效数字。确保使用的指数在范围之内。
编译器错误 C2022 错误消息
“number”: 对字符来说太大
字符或字符串常数中跟在反斜杠 (\) 后面的八进制数字太大,不能表示字符。
编译器错误 C2026 错误消息
字符串太大,已截断尾部字符
该字符串的长度超过了 16380 个单字节字符的**。
连接相邻字符串之前,字符串的长度不能超过 16380 个单字节字符。
大约为此长度的一半的 Unicode 字符串也会生成此错误。
编译器错误 C2027 错误消息
使用了未定义类型“type”
类型只有经过定义才能使用。若要解决该错误,请确保在引用类型前已对其进行了完全定义。
有可能声明一个指向已声明但未定义的类型的指针。但是 Visual C++ 不允许引用未定义的类

型。
编译器错误 C2028 错误消息
结构/联合成员必须在结构/联合中
结构或联合成员必须在结构或联合内部声明。
编译器错误 C2030 错误消息
“identifier”: 结构/联合成员重定义
结构或联合将同一标识符用于多个成员。
编译器错误 C2032 错误消息
“identifier”: 函数不能是结构/联合“structorunion”的成员
该结构或联合中的一个成员函数在 C++ 中允许使用而在 C 中却不允许。若要解决该错误,请

编译为 C++ 程序或移除该成员函数。
编译器错误 C2033 错误消息
“identifier”: 位域不能有间接寻址
该位域被声明为指针,这是不允许的。
编译器错误 C2034 错误消息
“identifier”: 位域类型对于位数太小
该位域声明中位的数目超过了基类型的大小。
编译器错误 C2036 错误消息
“identifier”: 未知的大小
对 identifier 的操作需要数据对象的大小,而该大小无法确定。
编译器错误 C2039 错误消息
“identifier1”: 不是“identifier2”的成员
该代码错误调用或引用了结构、类或联合的成员。
编译器错误 C2040 错误消息
“operator”:“identifier1”与“identifier2”的间接寻址级别不同
涉及该运算符的表达式具有不一致的间接寻址级别。
如果两个操作数都是算术的或都是非算术的(如数组或指针),则不用更改就可使用它们。如

果一个操作数是算术的,而另一个不是,则算术运算符将转换为非算术类型。
编译器错误 C2041 错误消息
非法的数字“character”(用于基“number”)
指定的字符不是基(如八进制或十六进制)的有效数字。
编译器错误 C2042 错误消息
signed/unsigned 关键字互相排斥
在单个声明中使用关键字 signed 和 unsigned。
编译器错误 C2043 错误消息
非法 break
break 仅在 do、for、while 或 switch 语句中合法。
编译器错误 C2044 错误消息
非法 continue
continue 仅在 do、for 或 while 语句中合法。
编译器错误 C2045 错误消息
“identifier”: 标签重定义
该标签出现在同一函数中的多条语句之前。
编译器错误 C2046 错误消息
非法的 case
关键字 case 只能出现在 switch 语句中。
编译器错误 C2047 错误消息
非法的 default
关键字 default 仅能出现在 switch 语句中。
编译器错误 C2048 错误消息
默认值多于一个
switch 语句包含多个 default 标签。删除其中一个 default 标签可解决该错误。
编译器错误 C2050 错误消息
switch 表达式不是整型
switch 表达式计算结果为一个非整数值。若要解决该错误,请在 switch 语句中只使用整数

值。
编译器错误 C2051 错误消息
case 表达式不是常数
Case 表达式必须是整数常数。
编译器错误 C2052 错误消息
“type”: 非法的 case 表达式类型
Case 表达式必须是整数常数。
编译器错误 C2053 错误消息
“identifier”: 宽字符串不匹配
宽字符串被分配给了一个不兼容的类型。
编译器错误 C2054 错误消息
在“identifier”之后应输入“(”
该函数标识符用在需要尾部括号的上下文中。
导致该错误的可能原因是省略了复杂初始化上的等号 (=)。
编译器错误 C2055 错误消息
应输入形参表,而不是类型表
函数定义包含参数类型列表而不包含形参表。ANSI C 需要命名的形参,除非它们是 void 或

是省略号 (...)。
编译器错误 C2056 错误消息
非法表达式
表达式因前一个错误而无效。
编译器错误 C2057 错误消息
应输入常数表达式
上下文要求常数表达式,即其值在编译时已知的表达式。
编译器错误 C2058 错误消息
常数表达式不是整型
该上下文需要整数常数表达式。
编译器错误 C2059 错误消息
语法错误 :“token”
该标记导致语法错误。
若要确定原因,则不仅要检查在错误信息中列出的行,还要检查该行上面的行。下面的示例对

声明 j 的行生成了错误信息,而该错误的真正源却出现在其上面的行中。
如果对行的检查没有获得有关可能出现的问题的任何线索,则尝试注释掉在错误信息中列出的

行以及可能出现在该行上面的若干行。
如果该错误信息在紧跟 typedef 变量的符号上出现,则检查该变量是否已在源代码中定义。
如果符号没有计算出任何结果(在使用 /Dsymbol= 编译时可能发生),可能会导致 C2059。
可能收到 C2059 的另一个特定原因是编译在函数的默认参数中指定了结构的应用程序。参数的

默认值必须是一个表达式。初始值设定项列表(如用于初始化结构的初始值设定项列表)不是表达式。其解决方法是定义一

个执行所需初始化的构造函数。
编译器错误 C2060 错误消息
语法错误 : 遇到文件结束
至少还需要一个标记。
编译器错误 C2061 错误消息
语法错误: 标识符“identifier”
编译器发现了不应在此出现的标识符。请确保在使用 identifier 之前对其进行声明。
初始值设定项可能括在了括号中。为避免该问题,请将声明符括在括号中或使其成为 typedef


在编译器将表达式作为类模板参数检测时也可能导致此错误;使用 typename 告诉编译器它是

一个类型。
编译器错误 C2062 错误消息
意外的类型“type”
编译器不需要类型名称。
编译器处理构造函数的参数列表中未定义类型的方式也可能导致 C2062。如果编译器遇到未定

义的(拼错了吗?)类型,则它假定构造函数是一个表达式,并发出 C2062。若要解决此错误,请只使用构造函数参数列表

中的定义类型。
编译器错误 C2063 错误消息
“identifier”: 不是函数
该标识符用作函数,但未声明为函数。
编译器错误 C2064 错误消息
项不会计算为接受“number”个参数的函数
通过表达式调用了函数。该表达式未计算为函数指针。
编译器错误 C2065 错误消息
“identifier”: 未声明的标识符
在可使用变量的类型前必须在声明中指定它。在可以使用函数前必须在声明或原型中指定该函

数使用的参数。
可能的原因:
1.您正在用 C 运行库的调试版本进行编译,在 for 循环中声明标准 C++ 库迭代器变量,然后

尝试在 for 循环范围外使用该迭代器变量。 用 C 运行库的调试版本编译标准 C++ 库代码暗指使用 /Zc:forScope。有关更

多信息,请参见调试迭代器支持。
2.可能正在调用当前不受生成环境支持的 SDK 头文件中的函数。
3.省略必要的包含文件,尤其是在定义 VC_EXTRALEAN、WIN32_LEAN_AND_MEAN 或

WIN32_EXTRA_LEAN 时。这些符号从 windows.h 和 afxv_w32.h 中排除了一些头文件以加快编译。(在 windows.h 和

afxv_w32.h 中查找排除的头文件的最新说明。)
4.标识符名拼写错误。
5.标识符使用了错误的大小写字母。
6.字符串常数的后面缺少右引号。
7.命名空间范围不正确。例如,若要解析 ANSI C++ 标准库函数和运算符,则必须用 using 指

令指定 std 命名空间。下面的示例未能编译,因为 using 指令被注释掉,并且在 std 命名空间中定义了 cout:
编译器错误 C2066 错误消息
转换到函数类型是非法的
在 ANSI C 中,函数指针和数据指针间的转换是非法的。
编译器错误 C2067 错误消息
转换到数组类型是非法的
对象被转换成了数组类型。
编译器错误 C2069 错误消息
“void”项到非“void”项的强制转换
类型 void 不能转换成任何其他类型。
编译器错误 C2070 错误消息
“type”: 非法的 sizeof 操作数
sizeof 运算符需要一个表达式或类型名称。
编译器错误 C2071 错误消息
“identifier”: 非法的存储类
声明 identifier 所用的存储类无效。
编译器错误 C2072 错误消息
“identifier”: 函数的初始化
错误指定了函数初始值设定项。
编译器错误 C2073 错误消息
“identifier”: 部分初始化数组的元素必须有默认构造函数
为用户定义的类型或常数的数组指定的初始值设定项太少。如果没有为数组成员指定明确的初

始值设定项及其对应的构造函数,则必须提供默认的构造函数。
编译器错误 C2074 错误消息
“identifier”:“class-key”初始化需要大括号
在指定的类、结构或联合初始值设定项两边没有大括号。
编译器错误 C2075 错误消息
“identifier”: 数组初始化需要大括号
在指定的数组初始值设定项两边没有大括号。
编译器错误 C2077 错误消息
非标量字段初始值设定项“identifier”
试图用非标量(结构、联合、数组或类)初始化位域。使用整数值或浮点值。
编译器错误 C2078 错误消息
初始值设定项太多
初始值设定项的数目超过了要初始化的对象数。
编译器错误 C2079 错误消息
“identifier”使用未定义的类/结构/联合“name”
指定的标识符是一个未定义的类、结构或联合。
初始化匿名联合时,可能会导致此错误。
编译器错误 C2081 错误消息
“identifier”: 形参表中的名称非法
标识符导致语法错误。
此错误可能是由使用形参表的旧形式导致的。必须在形参表中指定形参的类型。
编译器错误 C2082 错误消息
形参“identifier”的重定义
在函数体中重新声明了函数的形参。若要解决该错误,请移除该重定义。
编译器错误 C2083 错误消息
结构/联合比较非法
结构或联合直接与另一个用户定义的类型进行比较。这是不允许的,除非已经定义了比较运算

符或者存在到标量类型的转换。
编译器错误 C2084 错误消息
函数“function”已有主体
函数已经定义。
在以前的 Visual C++ 版本中,
•编译器将接受解析为同一实际类型的多个模板的专用化,尽管附加的定义将永远不可用。现

在编译器将检测这些多重定义。
•__int32 和 int 已被视为单独的类型。编译器现在将 __int32 作为 int 的同义词处理。这

意味着,如果函数同时在 __int32 和 int 上重载,编译器将检测多个定义,并提供一个错误。
编译器错误 C2085 错误消息
“identifier”: 不在形参表中
该标识符在函数定义中声明而未在形参表中声明。(仅用于 ANSI C)
编译器错误 C2086 错误消息
“identifier”: 重定义
多次定义了该标识符,或者后面的声明与前一个不同。
C2086 也可能是增量编译引用的 C# 程序集的结果。重新生成该 C# 程序集以解决此错误。
编译器错误 C2087 错误消息
“identifier”: 缺少下标
具有多个下标的数组的定义缺少大于 1 的维度的下标值。
编译器错误 C2088 错误消息
“operator”: 对于“class-key”非法
没有为结构或联合定义该运算符。该错误只对 C 代码有效。
编译器错误 C2089 错误消息
“identifier”:“class-key”太大
指定的结构或联合超过 4GB 的**。
编译器错误 C2090 错误消息
函数返回数组
函数不能返回数组。请返回指向数组的指针。
编译器错误 C2091 错误消息
函数返回函数
函数不能返回函数。请返回指向函数的指针。
编译器错误 C2092 错误消息
“array name”数组元素类型不能是函数
不允许使用函数数组。请使用指向函数的指针的数组。
编译器错误 C2093 错误消息
“variable1”: 无法使用自动变量“variable2”的地址初始化
在用 /Za 编译时,程序试图将自动变量的地址用作初始值设定项。
编译器错误 C2094 错误消息
标签“identifier”未定义
goto 语句使用的标签在函数中不存在。
编译器错误 C2095 错误消息
“function”: 实参具有类型“void”:“number”参数
传递给函数的参数为 void 类型,这是不允许的。请改为使用指向 void 的指针 (void *)。
number 指示哪一个参数为 void。
编译器错误 C2097 错误消息
非法的初始化
通过检查下面的可能原因进行修复
1.使用非常数值初始化变量。
2.用长地址初始化短地址。
3.在用 /Za 编译时,用非常数表达式初始化局部结构、联合或数组。
4.用包含逗号运算符的表达式初始化。
5.用既非常数又非符号的表达式初始化。
编译器错误 C2099 错误消息
初始值设定项不是常数
此错误只由 C 编译器发出,而且只对非自动变量发生。编译器在程序的开头对非自动变量进

行初始化,并且用于对这些变量进行初始化的值必须是常数。
由于编译时与运行时的浮点精度环境设置(有关更多信息,请参见 _controlfp_s)可能不同

,因此,编译器无法在 /fp:strict 下对表达式执行常数合并。在这种情况下,也可能发生 C2099。
当常数合并失败时,编译器调用动态初始化,这在 C 中是不允许的。
要解决此错误,请将模块编译为 .cpp 文件或对表达式进行简化。

Ⅶ c++中什么是语法错误,什么是编译错误

程序的错误主要分成三种:

  1. 编译链接错误;

    编译链接错误又分成编译错和链接错。

    编译错就是普通意义上的语法错,编译器进行语法检查不通过,也就是程序违背了计算机语言的语法,例如:括号不匹配、变量名拼写错误、用保留字定义变量名等;

    链接错是指程序通过了语法检查,但是无法生成可执行文件,最常见的是链接找不到lib库。初学者有时写了函数的声明,但是缺少函数的定义,此时就会出现链接错。

  2. 运行错误;

    运行错是程序可以执行,但是在执行过程中发生异常,提前退出程序。最常见的是指针越界,打开文件失败继续读取文件,总而言之是让计算机执行一些不能执行的语句。

  3. 逻辑错误

    逻辑错是程序也能运行,就是结果不对,主要原因有:程序算法本身错误,程序和算法不同义等。

    例如:新手经常将判断相等的==写成=赋值,往往就会导致逻辑错。

你的BD(int,int); 是一句函数调用?还是一句函数声明?

Ⅷ 怎样消除编译器关于 C++11 的警告

1. 预处理首先源代码文件(.c/.cpp)和相关头文件(.h/.hpp)被预处理器cpp预编译成.i文件(C++为.ii)。预处理命令为:gcc –E hello.c –o hello.i预编译过程主要处理那些源代码中以#开始的预编译指令,主要处理规则如下:u 将所有的#define删除,并且展开所有的宏定义;u 处理所有条件编译指令,如#if,#ifdef等;u 处理#include预编译指令,将被包含的文件插入到该预编译指令的位置。该过程递归进行,及被包含的文件可能还包含其他文件。u 删除所有的注释//和 /**/;u 添加行号和文件标识,如#2 “hello.c” 2,以便于编译时编译器产生调试用的行号信息及用于编译时产生编译错误或警告时能够显示行号信息;u 保留所有的#pragma编译器指令,因为编译器须要使用它们。2. 编译编译过程就是把预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件(.s)。编译的命令为:gcc –S hello.i –o hello.s或者从源文件直接输出汇编代码文件:gcc –S hello.c –o hello.s现在版本的GCC把预编译和编译两个步骤合并成一个步骤,由程序cc1来完成(C++为cc1plus)。3. 汇编汇编就是将汇编代码转变成机器可以执行的命令,生成目标文件(.o),汇编器as根据汇编指令和机器指令的对照表一一翻译即可完成。汇编的命令为:gcc –c hello.s –o hello.o或者从源文件直接输出目标文件:gcc –c hello.c –o hello.o4. 链接链接就是链接器ld将各个目标文件组装在一起,解决符号依赖,库依赖关系,并生成可执行文件。链接的命令为:ld –static crt1.o crti.o crtbeginT.o hello.o –start-group –lgcc –lgcc_eh –lc-end-group crtend.o crtn.o一般我们使用一条命令就可以完成上述4个步骤:gcc hello.c实际上gcc只是一些其它程序的包装,它会根据不同参数去调用预编译编译程序cc1、汇编器as、链接器ld。

Ⅸ iOS 编译报错怎么办

1.编译iPad真机时,选择了 Architetures:Standard(armv6) BaseSDK:iPhoneDevice3.2 TargetDeviceFamily:iPad.

若编译出现如下错误:

Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

则修改 GCC4.2CodeGeneral区域中的ComplieForThumb为非选中.

已经有了开发者证书及私钥后,可直接在越狱的手机上调试.

2. 编译链接时, "_OBJC_CLASS_$_xxx", referenced from:可能需要重新建立某个类的文件.

或者:选择项目名,在detail列表中的target列(显示为一个又圆圈),把这个文件的复选选中,或者再次选中.以把它加入到这个target里面来.

3.在sdk4.0及以上使用RegexKitLite报'captureCount' was not declared in this scope错误,是在非.m文件中使用了它的原因.

4.there is no sdk with the name or path.

从网上down的开源代码,结果运行的时候常出现这样的错,并且在deployment中没有iosdeploymenttarget选项.

尝试 Project/Edit Active Target/ 及 Set Active SDK菜单项,来回切换一下Active Configuration。

5. EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION错误,意味着这个app有内存管理的问题,一般是因为访问野指针对象造成的。

一个和内存相关的崩溃一般很难定位到源代码,因为这个恶魔可能很早就在程序中做了坏事了。假如一段有问题的代码混乱了内存结构,这样产生的蝴蝶效应可能会在之后很久才表现出来,并且总在不同的地方。所以,若有指针类型出现了不可能的变化,很可能就是因为内存结构被野指针调用混乱了。

修复一些警告后,可能就能预防一些内存错误。警告在左边靠近行号的黄色三角指出一个编译警告,你点击那个黄色的三角形,xcode可能会弹出一个“Fix-it”的建议。

EXC_BAD_ACCESS崩溃不像SIGABRT,将不会得到很明朗的错误消息。然而可以使用一个让人看到曙光的调试工具:Zombies!死亡对象工具。打开这个项目的scheme editor,选择Run 选项,然后选择Diagnosics标签。勾上Enable Zombie Objects选项。当这个zombie工具被启用之后,即使这个对象被释放了,这个对象的内存也不会被清理。所以,那块内存将会被标记为“长生不死的”。假如你试着之后又去使用这块内存,这个app能够意识到你的错误操作,并且app将会抛出“messagesent to daellocated instance”错误并且终止运行。

在工程中加入NSZombieEnabled 环境变量,并设为启用,则在 EXC_BAD_ACCESS 发生时,XCode 的 Console 会打印出问题描述中,设置方法:双击Executables 下的 可执行模组,在弹出窗口中,Variables to be set in the environment,添加 NSZombieEnabled,并设定为 YES,点击选中复选框启用此变量。

可以再加入 MallocStackLogging 来启用malloc记录,以获得更多的提示来帮助定位问题。

在gdb窗口输入 (格式: shell malloc_history <id> <address>) shellmalloc_history1436 0x5f7fcf0, 也可以在终端中去运行 就要去掉以上的shell 指令 如 malloc_history <id> <address>

应该仅当需要调试内存时,才设置上述环境变量。

注意一点:不应该一直启用zombie objects。因为这个工具将永远不会释放内存,只是简单标记一下这个内存是不死的,你最终将会在某个时候耗尽所有的内存,因为所有分配过的内存都不会得到重用。因此应该在排查内存相关的错误的时候才开启zombie objects,其他时候应该关闭它。

在xcode4中,To edit environment variables, go to Menu Proct / Edit Scheme…, select the desired configuration (you probably want 'Run') from the left sidebar first and then click on the Arguments tab. Environment variables are configurable there.

6.运行一个IPhone程序时,弹出窗口说“程序运行失败,预置描述文件已过期” 。 解决办法是,在Xcode中, window-> Orgnazier -> 你的iphone ->删除带有红*的该程序之前的Profile 。 然后从Xcode运行该程序.

7.真机编译时报 Code Sign error: The identity doesn't match any valid certificate/private key pair in the default keychain

修改工程和Targets的get infouild 中的code signing identity为空

8.调试打印

CFShow(coreFoundationThingy) will print out a description of coreFoundationThingy to the console. Output looks something like: {value = w:1186.000000 h:687.000000 type = kAXValueCGSizeType}

If NSLog() is printing something out as an NSCFType, try CFShow().

9. 编译时报 Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1,修改C/C++ Compiler Version为gcc4.2

10.this class is not key value coding-compliant for the key viewController

可能在创建了一个基于view的工程,而后把生成的viewcontroller删除了,但是在.xib中还有对它的引用,在IB中直接用delete键删除掉它就行了。

11.这台电脑上已经存在一个名为“embedded.mobileprovision”的预置文件,您是否要替换么?

http://blog.sina.com.cn/s/blog_6907b67f0100o2vw.html

12.真机调试时报failed to upload *.app

http://hi..com/%CB%E6%B7%E7_1989/blog/item/9649f49f805f05aec8eaf466.html

http://www.shouyanwang.org/thread-462-1-1.html

13.记的release时,先置delegate为nil。

一个节点不应该保留任何对不属于它的节点的引用。

14.模拟器

将xcode升级到4.3.1以后发现,ipad的模拟器,没有Home键了。Command+Shift+H就可以实现类似点击Home键的效果了。

阅读全文

与编译参数会导致编译报警被关闭相关的资料

热点内容
安卓手机怎么用爱思助手传文件进苹果手机上 浏览:835
安卓怎么下载60秒生存 浏览:794
外向式文件夹 浏览:226
dospdf 浏览:422
怎么修改腾讯云服务器ip 浏览:378
pdftoeps 浏览:484
为什么鸿蒙那么像安卓 浏览:728
安卓手机怎么拍自媒体视频 浏览:178
单片机各个中断的初始化 浏览:715
python怎么集合元素 浏览:471
python逐条解读 浏览:823
基于单片机的湿度控制 浏览:490
ios如何使用安卓的帐号 浏览:875
程序员公园采访 浏览:803
程序员实战教程要多长时间 浏览:966
企业数据加密技巧 浏览:126
租云服务器开发 浏览:805
程序员告白妈妈不同意 浏览:328
攻城掠地怎么查看服务器 浏览:593
android开机黑屏 浏览:569