C语言(调试绝活)

2019-08-08 16:12:14 浏览数 (1)

先来一段反面教材看看:

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

更好的写法是怎样的呢?

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

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

开启调试功能:

gcc example.c -o example -DDEBUG

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

#define DEBUG

关闭调试功能:

gcc example.c -o example

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

0 人点赞