c语言类调试,C语言(调试绝活)

众所周知,写一段稍微复杂的代码,就会马上面临调试的需要,而最基本的检测程序运行情况的调试技巧,就是在代码中安插许多 “警哨” 来帮助我们监视随时可能发生的异常。

技术上这没啥好说的,只是对于一个代码洁癖晚期患者来说,怎样写得干净又漂亮,是一件比写代码本身更重要的事情。

0818b9ca8b590ca3270a3433284dd417.png

先来一段反面教材看看:

0818b9ca8b590ca3270a3433284dd417.png

像上述程序那样的话,将不得已要对很多临时调试性代码做注释,用的时候要去掉注释符,非常麻烦。

更好的写法是怎样的呢?

0818b9ca8b590ca3270a3433284dd417.png

注意到,我们使用条件编译语句 #ifdef 来包含待调试语句,这样就能非常方便地开启或者关闭调试信息,而且没有注释符嵌套的烦恼。

那么,我们怎么控制这些调试语句的开启和关闭呢? 除了在代码里面定义宏之外,更正统的做法是给编译器相应的参数来控制:

开启调试功能:

gcc example.c -o example -DDEBUG

在这里,-D就是编译的同时,让gcc帮我们自动定义(Define)一个临时宏,这个临时宏的名字就紧跟在这个选项 -D 的后面,比如 DEBUG。带上了这个选项就相当于在代码里面写了这一行代码:

#define DEBUG

关闭调试功能:

gcc example.c -o example

注意到,当我们关闭调试功能的时候,虽然代码还在,但是编译出来的执行程序已经去除了这部分代码,因此可以最大限度节约了程序的尺寸大小,同时我们也再不用在代码中频繁修改来增删注释。这样用起来是不是非常方便呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值