对宏函数的理解

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>链接:将有关的目标文件进行彼此的想连接,使得这些所有的目标文件能够成为一个整体 ;链接分为 静态链接和动态链接 。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值