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: '
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
相关推荐: