1.熟悉预处理标识符:
__LINE__:当前行号;
__FILE__:进行编译的源文件;
__DATE__:文件编译时刻的日期字符串 ;
__TIME__:文件编译时刻的时间字符串 ;
__STDC__:遵循 ANSI.C为1,否则为0;
#:把一个宏转换为一个字符串;
##:起到拼接作用,例如a##b------->ab;
例如:
#include<stdio.h> #include<stdlib.h> int main() { int a = 1; int b = 2; printf("%d\n", a + b); printf("FILE:%s\nLINE:%d\nDATE:%s\nTIMER:%s\n",__FILE__,__LINE__,__DATE__,__TIME__); system("pause"); return 0; }
2.了解宏和函数的区别 :
a.宏做的是简单的字符串替换,在定义宏时不需要考虑参数的类型,而且定义宏都是大写,但是函数的参数在进行替换的时候,需要考虑参数的类型。
b.宏只占编译时间 ,而函数调用时占运行时间(分配单元,保存,值传递,返回),每次执行的时候都要载入 ,所以相对宏会比较慢。
c.使用宏函数也有缺点 ,使用宏函数过多,会大幅度增加代码的长度,而函数调用则不会。
3.理解编译链接的整个过程和详细的每个过程:
a.编译:编译程序读取源程序,将高级语言指令转换为功能等效汇编语言,再由汇编程序转换为机器语言,并且按照 操作系统对可执行文件格式的要求进行链接生成可执行程序 ;
b.编译的过程:
源程序--->编译预处理--->编译的优化--->汇编--->链接;
c.<1>编译预处理 :在读取源程序的时,对其中的伪代码和特殊符号进行处理 ;
其中伪代码包括:条件编译指令 ,头文件包含指令,宏定义指令,特殊符号;
<2>编译的优化:经过预编译得到的输出文件中,只有常量和c语言的关键字 ;编译的优化有两种方式 :一是对中间代码的优化,不依赖计算机;二是对对目标的代码生成而进行的;
<3>汇编:把汇编语言翻译成目标机器指令的过程;
<4>链接:将有关的目标文件进行彼此的想连接,使得这些所有的目标文件能够成为一个整体 ;链接分为 静态链接和动态链接 。
对宏函数的理解
最新推荐文章于 2023-05-07 16:49:24 发布