易截截图软件、单文件、免安装、纯绿色、仅160KB

深入认识 Turbo C 编译器


有谁真正的理解过一个编译器呢?许多人认为TC很简单很落后,但是即便是这样简单的工具,到底有几个人真正的深入理解了呢?一个简单的编译器都不能理解,如何能成为高手,如何能深入的使用更加高级的工具呢?不要以为自己使用的是VC就很了不起,因为使用这样傻瓜化的工具只能让你看不到事物的本质。接下来我们就来深入的认识Turbo C编译器。
广义的编译器,包括了代码编译器(compiler),目标文件链接器(linker),库文件管理工具(如tc的tlib,gcc的ar),编译驱动工具(如VC的NMake,gcc的make),ANSI c/c++标准的头文件和库文件,扩展的头文件和库文件,集成开发环境(IDE),等等与编译相关的工具,所有这些工具的集合,就组成了广义上的编译器。
狭义的编译器,则仅指compiler。compiler只负责将源代码,即.c/.cxx/.cpp文件编译成为目标文件.o/.obj。编译过程的输入是源文件,包括自己书写的.c和.h以及系统提供的.h文件,编译的输出是目标文件。需要强调的一点时,在compile阶段,只处理源文件,所以不需要库文件和额外的目标文件的参与,因此,只要代码在语法上没有错误,compile就一定能产生目标文件。
对于一个广义的编译器来说以下几个部分是必备的:1.compiler,2.linker,3.系统提供的头文件和库文件。前面已经介绍了compiler,接下来看linker。
linker的功能是将目标文件进行装配,将浮动的地址变为确定的地址,这个工作是通过修改目标文件的重定位项来实现的,其具体的过程可以参考"Linker & loader"这本书,这是一本详细介绍linker和loader的好处,在此做个推荐。总之,link这一阶段处理的输入是目标文件,其输出是可执行文件,或动态库。
任何一个编译器都会提供库文件和与之对应的头文件,C/C++编译器一般都提供ANSI C/C++的库和相应的头文件。
从现在起我们就需要建立起一个概念,就是广义的编译过程,实际上是由编译和链接两个基本步骤组成的,如果能深刻的理解这两个步骤,就是一大进步了。
在编译器里,有一些默认的规定,我们需要了解。在编译器中,bin目录用于存放compiler、linker等工具,include目录用于存放头文件,lib目录用存放库文件,大多数的编译器的目录就是按这个来组织的。
接下来看Turbo C为我们提供了些什么(请到我的网站下载我动手制作的改良版TC编译器)。
bin目录中:
    CPP.EXE    是一个C语言预处理工具,就是负责对源代码进行预编译处理,不要理解为c++编译器
&nbs


相关文档:

(转)彻底搞定C指针-函数名与函数指针

 (转自)http://blog.pfan.cn/whyhappy/6030.html
 函数名与函数指针
一 通常的函数调用
    一个通常的函数调用的例子:
//自行包含头文件
void MyFun(int x);    //此处的申明也可写成:void MyFun( int );
int main(int argc, char* argv[])
{
   ......

Keil C中用unsigned long要注意的问题

 Keil C里用到了unsigned long长整型变量,编译时都能通过,但运行时老是溢出,同伙百度到了此贴,解决了问题,于是转帖于此:
今天调试一个乘法,出了点问题,先看代码示意:
void test(void)
{
       unsigned long mid1,mid2,mid3;
       mid1 ......

在LINUX下进行C语言编程所需要的基础知识

 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容:
源程序编译
Makefile的编写
程序库的链接
程序的调试
头文件和系统求助
--------------------------------------------------------------------------------
1.源程序的编译
在Linux下面,如果要编译一个C ......

MySQL与C/C++接口应用学习

 ---- 在数据库的应用开发中,常常会遇到性能和代价的之间矛盾。以作者在开发股市行
情查询和交易系统中遇到的问题为例,要在实时记录1000多只股票每分钟更新一次的行
情数据的同时,响应大量并发用户的数据查询请求。考虑到性价比和易维护性,系统又
要求在基于PC服务器,Windows NT平台的软硬件环境下实现。开 ......

c代码:电话号码和字母转换

这两天看到有人讨论电话键盘上的字母、号码和字母的转换,我也随便写了一段
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_LEN 15
char *tbl_itoa[] =
{
"0", // 0
"1", // 1
"ABC", // 2
"DEF", // 3
"GHI", // 4
"JKL", // 5
"MNO", ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号