编译出错的可能情况

编译器的一部分工作是寻找程序文本中的错误。编译器没有能力检查一个程序是否
按照其作者的意图工作,但可以检查形式(form)上的错误。下面列出了一些最常见的

编译器可以检查出的错误。

语法错误(syntax error):程序员犯了C++语言文法上的错误。下面程序展示了一些常
见的语法错误;每条注释描述了下一行中语句存在的错误:
// 错误:main 的参数列表漏掉了
int main ( {
// 错误:endl 后使用了冒号而非分号
std::cout << "Read each file." << std::endl:
// 错误:字符串字面常量的两侧漏掉了引号
std::cout << Update master. << std::endl;
// 错误:漏掉了第二个输出运算符
std::cout << "Write new master." std::endl;
// 错误:return 语句漏掉了分号
return 0
}

类型错误(type error):C++中每个数据项都有其类型。例如,10 的类型是int(或者
更通俗地说,“10 是一个int 型数据”)。单词"hello",包括两侧的双引号标记,则是一

个字符串字面值常量。一个类型错误的例子是,向一个期望参数为int 的函数传递了
一个字符串字面值常量。
声明错误(declaration error):C++程序中的每个名字都要先声明后使用。名字声明失败
通常会导致一条错误信息。两种常见的声明错误是:对来自标准库的名字忘记使用
std::、标识符名字拼写错误:
#include <iostream>
int main()
{
int v1 = 0, v2 = 0;
std::cin >> v >> v2; // 错误:使用了"v"而非"v1"
// 错误:cout 未定义;应该是std::cout
cout << v1 + v2 << std::endl;
return 0;
}
错误信息通常包含一个行号和一条简短描述,描述了编译器认为的我们所犯的错
误。按照报告的顺序来逐个修正错误,是一种好习惯。因为一个单个错误常常会具有传
递效应,导致编译器在其后报告比实际数量多得多的错误信息。另一个好习惯是在每修
正一个错误后就立即重新编译代码,或者最多是修正了一小部分明显的错误后就重新编
译。这就是所谓的“编辑-编译-调试”(edit-compile-debug)周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值