您的位置:首页 > 其它

预处理,宏,隐藏在背后的编译和链接

2016-10-19 00:29 148 查看
一.预处理器:在编程的时候,第一个步骤就是预处理;就是编码之前对其进行文本性的操作。
主要有四个作用
1.宏替换
2.头文件的展开
3.去注释
4.条件编译
是否有过这种经历,编译的代码自己不满意,过段时间要找,然后找了很长时间,这是可以通过程序找到当时代码的目录文件,日期,以及行数和时间 都可以,这时候就可以用上常见的这些预处理标示符。
#define __FILE__ //编译的源文件;
#define __LINE__ //当前的行号;
#define __DATA__ //编译的日期;
#define __TIME__ //编译的时间;
二.# 和##的作用
在宏定义中常用#创建字符串。
预处理中##起到连接的作用。如:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define STR1 "we"

#define STR2 "are"
#define STR3 "happy"
#define STR1STR2STR3 "we are happy"
#define CAT(a,b,c) a##b##c
int main()
{
printf("%s\n", CAT(STR1,STR2,STR3));
system("pause");
return 0;
}
三.了解宏和函数的区别。
宏可以频繁的执行简单的运算如求两个数的最大值;
#define MAX(a,b) (a>b?b:a)
而函数的参数的声明必须为一种特定的类型,而宏不用考虑这些,所以宏与类型无关。
实现把字符数组中的每个空格替换成“%100”。

例如输入“we are happy.”,则输出“we%100are%100happy.”。
四.理解编译链接的整个过程和详细的每个过程。
编译链接就是将源代码转换成计算机可执行的程序。
一个简单的程序,都要经历四个步骤:预处理,编译,汇编和链接四个过程。
编译:就是将预处理的文件经过词法,语义的分析以及优化产生相应的汇编代码文件。这个过程是整个 程序最核心也是最复杂的过程。
汇编
汇编器就是将汇编代码变成计算机可执行的指令,几乎每一个汇编代码都有对应的计算机指令。这个过程没有复杂的语义,也不用进行优化,只需参照计算机给的指令翻译就好了。
链接:
  链接程序的主要就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: