C、C++语言技术文档全解.docx

C、C语言技术文档全解

C/C++技术文档c语言C程序运行所需要的过程文本编写代码?编写文本代码,生成c或cpp文件,这时候它还是文本的;?预处理(这个可以没有,这是跨平台程序所需要的)有时候,我们需要将程序在windows和Linux下都能够运行,只要用VS编译工具下编译一遍,在GCC编译工具下编译一遍。但是如果,有一种情况就一个程序有两个函数a()和b(),a()在Window下可以编译运行,但是b()不能运行的,b()在Linux下可以编译运行,a()不能运行,这就需要在编译之前对代码进行预处理。预处理的形式如下:#include stdio.h#include myHeader.h系统将自动调用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。宏定义文件包含条件编译complie编译,就是compile,由c编译程序对你写的代码进行词法和句法分析,发现并报告错误,有错时编译不能通过。如若无错,则生成中间代码,扩展名为obj,此时它便是二进制的了;?link(build)连接,在汇编里称link,在c里叫生成,即build,它的作用是生成可执行的exe文件。由于一个程序的源码可由多个文件组成。这些文件在第二步 中分别编译,生成各自的目标文件,这一步的作用便是将这些obj文件,以及程序中需要的其它库文件(dll除开),统一到一个文件中来,形成单个的exe 文件。此exe文件便可以在操作系统下直接运行了。?link将会把编译好的多个目标文件以及系统中的库和组件等,组合成一个可执行的程序上述第二步做完中间代码生成的工作后还有个代码优化,这里就不详讲了。?executecompile、build分别对应编译和连接这两个过程。execute的意思是执行,即生成了exe文件后运行它。如果你的程序有修改,点这一项它会 弹出窗口问你是否重新编译和连接,也就是它可以自动把前面的工作都做了。也就是说,vc菜单里的execute功能如下:?1.程序有修改时,或者没有做前面的编译连接工作时?execute=compile+build+执行;?2.程序编译连接好后?execute仅仅是执行,不再做前面两项工作。?当程序有修改时,选择execute只重编译和连接有改动的内容,但这样做有时候会出错,这时可选择build菜单下的rebuild all,重新编译、连接所有文件。?总之,c程序的生成可图示如下:?编写源代码-编译-连接,也叫生成-运行?对应的各个阶段处理的文件的扩展名为:?c或cpp-obj-exe。?c程序是编译执行的,还有一种程序是解释执行的,如java,它的源文件经过编译后形成扩展名为class的中间代码,之后不做连接生成exe文件,而是直接将这种.class的中间代码拿到java虚拟机平台上,由解释器解释执行。这种方式效率较低,但较灵活。书上看到实现一个程序的过程(统称为翻译)编译整个编译过程:将一个源文件(也有可能是多个源文件,可能有依赖其他头文件,或者library),编译成目标代码(object code),所谓的目标代码其实就是二进制文件预处理器处理(preprocessor)在这个过程,预处理器,在源代码上进行文本操作,例如将”#define”指令定义的符号,转换为指定数值解析(parse)预处理完成后,进入解析阶段,此阶段会将检测语法问题,并打印警告和错误。链接将多个源文件链接到一起,形成单一或者完整可行程序。执行载入内存开始初始化变量,那些不是存储在堆栈中的,未被初始化的变量将会这个时候赋初始值。程序开始执行这个开始时会接收命令行参数,然后开始执行main函数程序会使用堆栈(stack)和静态内存(static),堆栈存储的是局部变量和返回地址,静态内存存储的变量,在整个程序执行结束后内存数据才会销毁程序的中止正常的中止用户break键发生错误停止基本语法三字符序列??([??)]??!|??{??}??’^??=#??/\??-~三字符序列即可以将对应“??”加一个字符,转换成其他表达式,以前是为了表示键盘中没有字符,或者是为了防止有些字符集不包含对应的字符一般这个很少用,因为有极大的出错可能比如:printf(“delete file ( are you really sure??)”);这个输出过程可能会出现”]“int main(void){printf(??) \n);return 0;}转义字符(不解释)//ANSI C标准中新增的转义字符printf(\ddd \n);//输出ddd,表示1~3个八进制数字printf(\xddd \n);//表示1~3个都十六进制数字,因为输出字符太长,报错无法输出#include#include是文件包含命令,主要用来引入对应的头文件。#include的处理过程很简单,

文档评论(0)

1亿VIP精品文档

相关文档