C语言中宏定义替换和开关即查看文件的使用

 

vs中的宏定义多种使用方法
以及在大项目中如何查看代码行段和函数名称及路径__LINE__(行号),__func__(所在函数名称),__FILE__(文件名)

一、有什么用处

 

宏定义的使用和__LINE__(行号),__func__(所在函数名称),__FILE__(文件名)可以在大项目中更容易查看代码出错的地方

二、使用步骤

1.宏定义

@1

a7f18ff259d44b638c6ab9c0bc02bb16.png

 这里的#define DEBUG

就是相当于一个开关,在编译器预处理之前就给完成了转译

#ifdef DEBUG 这里的语句相当于if else 但结束是需要一个#endif

这个代码输出的是a的值,以为定义了DEBUG

cad6bfb57a4e4e3e976c4184cf3e3edb.png

 @2

a3c41d1afdf7465b8fac220e987dd9d2.png

accfe94f31844be2b68485b38324eaca.png

 这个是简单的求圆面积的代码,直接用宏替换其中的PI和半径,这在一些项目中比较常见,是比较简单的用法

但是有一种写法会出错,这个错误有时候不注意就会出错

a0c0399a7ccb4240a85393d1c03c1fcd.png

 这里的是正确的,带入完全没问题,但是如果把3换成1+2呢,看看效果

c00fa7dea1e94c5b9c852dc4587d4ff4.png

 看,结果是5,因为C语言的预处理不关心我们c的语法,不会替我们做计算,他会直接代值进去,代进去就是1+2*1+2,刚好等于5,为了避免这种错误,只能在宏定义时改为#define F(x)    (x)*(x),在每个表达式上加上括号就可以了

5c1d093d11c34ed7957cb38e8eb3f909.png

 这样就不会出错了

 

2.__LINE__,__func__,__FILE__

d8b60c92dcbc453f8e015356a69256fc.png

 这在大项目中很常见到

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值