第一范文网 - 专业文章范例文档资料分享平台

VC6编译与链接过程中常见的出错提示

来源:用户分享 时间:2025/6/18 1:01:27 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

Visual C++ 6.0编程环境的使用

目 录

4 编译与链接过程中常见的出错提示 .................................................................................................................. 1 4.1 编译、链接问题的解决方法 ......................................................................................................................... 1 (1)努力读懂VC报告的错误与警告信息 ......................................................................................................... 1 (2)定位问题所在行 .......................................................................................................................................... 1 (3)解决问题的方法 .......................................................................................................................................... 1 (4)避免被VC误导 ............................................................................................................................................. 1 (5)编译链接问题的解决不代表程序正确 ...................................................................................................... 2 4.2 常用单词与术语 ............................................................................................................................................. 2 4.3 常见编译错误信息 ......................................................................................................................................... 4 (1)error C2001: newline in constant ................................................................................................................. 4 (2)error C2017: illegal escape sequence .......................................................................................................... 4 (3)error C2015: too many characters in constant ............................................................................................. 4 (4)error C2137: empty character constant ....................................................................................................... 5 (5)error C2018: unknown character '0x##' ....................................................................................................... 5 (6)error C2041: illegal digit '#' for base '8' ...................................................................................................... 5 (7)error C2065: 'xxxx' : undeclared identifier .................................................................................................. 5 (8)error C2086: 'xxxx' : redefinition ................................................................................................................. 6 (9)error C2374: 'xxxx' : redefinition; multiple initialization ............................................................................. 6 (10)error C2143: syntax error : missing ';' before (identifier) 'xxxx'或before 'type' ......................................... 6 (11)error C4716: 'xxx' : must return a value ..................................................................................................... 7 (12)error C2006: #include expected a filename, found '(' / found 'identifier' / found 'newline' ............... 7 (13) error C2039: 'aver' : is not a member of 'STU' ......................................................................................... 7 (14)error C2043: illegal break .......................................................................................................................... 7 (15)error C2046: illegal case / error C2047: illegal default ............................................................................ 8 (16)error C2050: switch expression not integral .............................................................................................. 8 (17)error C2051: case expression not constant ................................................................................................ 8 (18)error C2079: 'da' uses undefined struct 'data' ............................................................................................ 8 (19)error C2081: 'num2' : name in formal parameter list illegal ..................................................................... 9 (20)error C2122: 'num2' : prototype parameter in name list illegal ................................................................. 9 (21)error C2082: redefinition of formal parameter 'aver' ................................................................................ 9 (22)error C2172: 'fread' : actual parameter is not a pointer : parameter 1 ..................................................... 9

(23)error C2198: 'FindMin' : too few actual parameters ................................................................................. 9 (24)error C2087: '' : missing subscript....................................................................................... 10 (25)error C2133: 'num' : unknown size ........................................................................................................... 10 (26)error C2106: '=' : left operand must be l-value ........................................................................................ 10 (27)error C2108: subscript is not of integral type .......................................................................................... 10 (28)error C2109: subscript requires array or pointer type ............................................................................. 10 (29)error C2181: illegal else without matching if ........................................................................................... 11 (30)error C2296: '%' : illegal, left operand has type 'double ' ....................................................................... 11 (31)fatal error C1004: unexpected end of file found ....................................................................................... 11 (32)fatal error C1021: invalid preprocessor command 'defint'/'hinclude' ...................................................... 11 (33)fatal error C1083: Cannot open include file: 'sdtio.h': No such file or directory..................................... 11 (34)error C2220: warning treated as error - no object file generated ............................................................ 11 4.4 常见编译警告信息 ....................................................................................................................................... 11 (1)warning C4129: 'm' : unrecognized character escape sequence ................................................................ 12 (2)warning C4508: 'main' : function should return a value; 'void' return type assumed ................................ 12 (3)warning C4098: 'change' : 'void' function returning a value ..................................................................... 12 (4)warning C4700: local variable 'xxx' used without having been initialized ................................................ 12 (5)warning C4013: 'print' undefined; assuming extern returning int.............................................................. 12 (6)warning C4047: '=' : 'int *' differs in levels of indirection from 'int '......................................................... 13 (7)warning C4024: 'fun' : different types for formal and actual parameter 2 ................................................. 13 (8)warning C4133: 'function' : incompatible types - from 'int [128]' to 'char *' ............................................ 13 (9)warning C4022: 'fread' : pointer mismatch for actual parameter 1 ........................................................... 14 (10)warning C4018: '<' : signed/unsigned mismatch ..................................................................................... 14 (11) warning C4305: '=' : truncation from 'const double ' to 'float ' ............................................................... 14 (12)warning C4553: '==' : operator has no effect; did you intend '='? ......................................................... 15 (13)warning C4715: 'fun' : not all control paths return a value ..................................................................... 15 4.5 常见链接错误 ............................................................................................................................................... 16 (1)error LNK2001: unresolved external symbol _main .................................................................................. 16 (2)error LNK2005: _main already defined in xxxx.obj ................................................................................... 16 (3)fatal error LNK1168: cannot open Debug/P901.exe for writing ................................................................ 17 4.6 TURBOC V2.0编译错误信息的英汉对照表 .................................................................................................. 17

2

4 编译与链接过程中常见的出错提示

4.1 编译、链接问题的解决方法 (1)努力读懂VC报告的错误与警告信息

编译、链接过程中,主要由于初学和录入阶段的击键失误,VC经常会提示程序有错(语法和拼写问题,肯定不会指明算法有问题,否则就不用编程了)。遇到这些英文的提示时,不少同学无从下手。一定要克服畏难情绪和一看英文就怕的心理,凭自己能考上大学的英语水平,只要仔细、一个单词一个单词地看,这些英文、包括在线帮助中的英文语句应基本上能看懂,个别单词实在不认识就查一查,做IT的哪能不学英语,这本身也是在日常生活中学习英语的机会。

(2)定位问题所在行

对于编译过程中的出错提示,即便没有完全理解、似懂非懂,也没有很大关系,只要双击Output窗口中的出错信息就可以自动跳到出错的程序行,仔细查看该行或其前一、二行 (特别是在编译器所报告的行找不到问题时,通常问题可能出现在其前一行,极少在其前2行),加上经验的逐渐积累和人类具有举一反三、触类旁通的自我学习进步能力,解决这些简单问题并非难事。当然,能看懂并理解出错的原因则更好。

(3)解决问题的方法

初学者解决这些出错提示应当遵循的原则是:先解决最前面的、大概知道其意思的、能够解决的问题,且解决一个后立即重新编译,很可能一下子就解决了多个问题,因为一个错误可能导致编译器连锁反应报告多个错误。若同一行报告了多个错误,则先解决能看懂的、知道出错原因的问题。

若确信某行存在问题,但因语法、参数格式掌握不好等原因而无法修正,则可将光标移至相应的关键字或函数名上按F1键以查看系统帮助中的语法、参数说明以及示例程序,或者查看网站上考试时开放的C语言学习资料,将其中的示例代码复制到程序中进行对照,一般均能解决问题。

(4)避免被VC误导

必须指出的是,计算机毕竟是机器,编译器所报错误和警告提示不一定是准确的,编译器给出的信息仅供参考(大多数时候是准确的),最终需要发挥人的智慧来判断并解决问题。如VC6对以下代码将报告“syntax error : missing ';' before '!='”,但实际却是while后少了一个“(”,其报告此时就是误导,但其所指行数存在问题却是准确的,至少帮我们指明的出问题的位置。

while (ch = getchar()) != '\\n' && ch != EOF) {

?? }

再如VC6对以下代码将报告第4行错误“error C2085: 'main' : not in formal parameter list”,但实际却是第1行末少了';'。

1

float hanshu(int cs[], int n)

int main(void) {

printf(\ return 0; }

(5)编译链接问题的解决不代表程序正确

初学者常有这样的迷惑:程序的编译、链接过程均正确,没有任何错误或警告信息,但结果总是不对,找不到原因。

程序编译、链接时没有任何错误或警告信息,只能代表没有语法错误和模块引用错误,但并不代表这样的程序能够做任何事情。例如,以下程序没有任何编译、链接问题,但它能解决什么问题呢?

#include

int main(void) {

printf(\ return 0; }

程序的运行结果不正确,应该是程序的算法本身有问题或算法的实现有问题,数据处理错误所致,应仔细检查源程序的设计问题。

4.2 常用单词与术语

base '8':以8为基础,八进制。 Characters:字符。 Comment:注释。

Constant:常量,例如整型、浮点型(又分float、double)、字符、字符串常量。 Digit:数字。

Escape sequence:转义序列。 Expression:表达式。 Function:函数

formal parameter/actual parameter:形式上的参数,形参/实际的参数,实参。 Identifier:标识符,变量、函数等的名字。 Indirection:间接寻址。 Macro:宏,#define所定义。

Operand/operator:操作数/操作符。 Parameter:参数。 Pointer:指针。

2

Preprocessor:预处理,与#define、#include相关 Prototype:原型。

signed/unsigned:有符号的/无符号的。 Symbol:符号。 Subscript:下标。 Truncation:截断,舍去。 Type:(数据)类型。 Value:值。

Variable,local variable:变量,局部变量。

l-value:左值,赋值操作符(=)左边的值,可理解为等号左边的能存储数据的变量。 Extern,external:外部,本文件以外的其它模块所定义的变量或函数。

Assumed,assuming:假定,假设,默认为。 Convert:转换。

Differs,different:不同,不一致,有差异的。 Fatal:致命的。 Illegal:非法,不合法。

Incompatible:不相容的,不兼容的。

Initialization,initialized:初始化,给变量赋一个确定的值。 Integral:完整的,整数的。 Invalid:无效的。

Matching/mismatch:匹配/不匹配。 Missing:缺少。 Redefinition:重定义。 Syntax:句法,语法。

Declared/undeclared: 已声明的/未声明的。 Undefined:未定义;

Unexpected/expected:意外,意想不到,不希望的/预期的、希望的。 Unknown:未知。

Unrecognized:无法识别的。

Unresolved:悬而未决,尚未解决,还未落实

3

搜索更多关于: VC6编译与链接过程中常见的出错提示 的文档
VC6编译与链接过程中常见的出错提示.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6dwm83ncuc7b3ef98nec_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top