学习《c/c++程序员实用大全》心得(一)

书是从c++部分开始看起的,可刚看了个开头就转回来看c语言的部分了。今天首先要讲讲学习到的关于编译的一些知识和理解。

 

#include语句所指定的文件是包含c源代码的ASCII码文件。头文件在编译器的include子目录下(.h文件,这个"h"代表的是head)。每一个不同的编译器的头文件是不同的。例如,我们可以查看一下计算机上现有的两个IDE下的编译器的头文件。codeblocks 的gcc编译器(minGW子目录下,minGW是一套GNU工具集合),其include子目录中的stdio.h和VS9.0下vc编译器的include子目录中的stdio.h的内容是不一样的。我们不能轻易的将不同编译器的头文件拿来互换使用,头文件都是由相应的编译环境下的库来支持的。头文件里可能只包含了一些声明,具体实现的代码在库文件里,而库文件通常是.obj为扩展名的,它们是已经编译后的机器码。因此,当我们在程序用使用库函数可以减少编译时间。

 

另外,讲一下编译器和连接器,编译错误和连接错误。编译过程会检查语法错误,如果出现语法错误,编译不能通过。编译通过,将会生成目标文件,目标文件中的指令虽然也是以二进制形式存储的,但是并不能执行,它所包含的信息不完整。例如,当源文件中有这样的语句"extern int n;”出现,目标文件中将不包含数据n,因为extern表明它已经在别的编译单元里定义了。目标文件生成后,就会激活连接器,它将目标文件中的语句和编译器提供的函数,或着其他目标文件连接起来,生成一个可执行文件.exe。在IDE中,一般,我们built是包含以上两个过程的,因此即使没有语法错误,仍然可能出现编译通不过的情况。比如报错"Error:Function 'print' should have a prototype in function main()",这是连接过程出现的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值