预处理阶段知识概要
2016-10-18 22:30
113 查看
1.预处理阶段
1).实现的作用:
(1)实现宏替换
(2)将使用的头文件的展开
(3)取消注释
(4)条件编译
在unix编译中,预处理指令 gcc -E test.c test.i
下面在unix编写一个的简单的程序展示下
代码
预处理后结果
2).熟悉预处理标识符
下面写个例子来进一步了解
2.宏与函数的区别
宏(#define):每次都需要在代码块中替换,所以代码的长度会大幅度增加。执行速度提高。宏参数的求值与表达式的上下程序有关,除非加上括号,就会产生由于操作符优先级带来的不可预料的结果。每次用于宏定义时,都将重新求值,会产生副作用。宏与类型无关。
函数:函数代码出现于一个地方,只需要调用不需要替换,代码长度较短。由于函数调用、返回值存在额外开销。函数只求值一次,多次使用参数不会导致多种求值过程,不会导致特殊问题。函数的参数与类型有关。
3.理解编译链接的整个过程和详细的每个过程
1)预处理阶段
unix下的指令:gcc -E test.c -o test.i(test.c为源代码)
2)编译——c语言代码转换为汇编代码
unix下的指令:gcc -S test.i -o test.s
3)汇编———汇编代码转换为二进制
unix指令:gcc -c test.i -o test.o
4)链接——将二进制代码链接成一个可执行程序
gcc test.o -o test1
./test1
1).实现的作用:
(1)实现宏替换
(2)将使用的头文件的展开
(3)取消注释
(4)条件编译
在unix编译中,预处理指令 gcc -E test.c test.i
下面在unix编写一个的简单的程序展示下
代码
预处理后结果
2).熟悉预处理标识符
__FILE__//进行编译的源文件名 __LINE__//文件当前行的行号 __DATE__//文件被编译的日期 __TIME__//文件被编译的时间 #argument//宏参数转换为一个字符串argument ##//将位于两边的符号连接成一个符号
下面写个例子来进一步了解
#include <stdio.h> #include <Windows.h> int main() { printf("file:%s\n", __FILE__); printf("line:%d\n", __LINE__); printf("date:%s\n", __DATE__); printf("time:%s\n", __TIME__); system("pause"); return 0; }
#include <stdio.h> #include <Windows.h> #define M 30 #define PRINTF(FORMAT,VALUE)\ printf("the number of " #VALUE " is " FORMAT"\n", VALUE) int main() { PRINTF("%d", M); system("pause"); return 0 }
#include <stdio.h> #include <Windows.h> #define XHAME(a,b) (int)a##b int main() { printf("%d\n",XHAME(2,3)); system("pause"); return 0; }
2.宏与函数的区别
宏(#define):每次都需要在代码块中替换,所以代码的长度会大幅度增加。执行速度提高。宏参数的求值与表达式的上下程序有关,除非加上括号,就会产生由于操作符优先级带来的不可预料的结果。每次用于宏定义时,都将重新求值,会产生副作用。宏与类型无关。
函数:函数代码出现于一个地方,只需要调用不需要替换,代码长度较短。由于函数调用、返回值存在额外开销。函数只求值一次,多次使用参数不会导致多种求值过程,不会导致特殊问题。函数的参数与类型有关。
3.理解编译链接的整个过程和详细的每个过程
1)预处理阶段
unix下的指令:gcc -E test.c -o test.i(test.c为源代码)
2)编译——c语言代码转换为汇编代码
unix下的指令:gcc -S test.i -o test.s
3)汇编———汇编代码转换为二进制
unix指令:gcc -c test.i -o test.o
4)链接——将二进制代码链接成一个可执行程序
gcc test.o -o test1
./test1
相关文章推荐
- PMBOK概要(九大知识体系与五个具体阶段)
- C++的基础知识(六)--条件编译及编译预处理阶段
- (转)概要设计详细设计阶段的监理
- Opencv的准备阶段小知识
- 现代软件工程_团队项目_阿尔法阶段_前端知识回顾2_2017.12.26
- 第一阶段知识总结及问题
- C++ 预处理指定基础知识
- 实训阶段知识总结和归纳(一)
- [转]项目管理9大知识体系与5个具体阶段
- UI设计的狂暴之路(PS篇)---设计知识学习路线概要以及PS在日常生活中的关键作用
- 【转】C语言条件编译及编译预处理阶段
- Java开发环境安装及阶段学习需掌握知识
- 概要文档知识补遗
- 基于Wiki的网络协作/知识积累试验平台概要设计(未完成v0.2.0204)
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- Verilog基础知识5(ASIC设计中各个阶段的关键问题汇总)
- 财务知识SAP概要
- 明天做“系统异常分析课程” 基础知识阶段学习报告
- 预处理阶段