一.宏定义(1)

本文介绍了C语言中的宏定义,它属于编译器预处理范畴,主要讨论了宏与函数调用的区别,以及宏在节省运行时间方面的优势。通过实例展示了如何使用宏定义常量,以及防止头文件重复包含的宏技巧。
摘要由CSDN通过智能技术生成

1.     关于宏

    宏在c/c++ 中是个很常用的玩意儿,C语言中如何使用宏C(和C++)中的宏属于编译器预处理的范畴,属于编译期概念(而非运行期概念)

 函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存, 宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)


举个例子来说

现在我们有需求需要经常用到一年的秒秒数的这个常数做计算。

代码如下:

 

#define YEAR_SECONDS365*24*60*60

 

int _tmain(int argc, _TCHAR* argv[])

{

       intnYearSecond=YEAR_SECONDS; // 1

       printf("%d\n",nYearSecond);

       getchar();

       return 0;

}
       有些人可能会认为这个时候nYearSecond = 365*24*60*60  其实不然,为什么说预编译呢,其实这个时候编译器在编译的时候已经帮你吧 YEAR_SECONDS 计算好了,即 365*24*60*60  = 31536000 (十六进制为 1E13380),怎么验证呢,很简单只用用编译器进入到汇编状态,就可以很清楚的看到这个时候是将1E13380 赋值给了 变量nYearSecond了,如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值