使用于处理器进行调试:
可使用NDEBUG与处理器变量实现有条件的调试代码:
Int mian()
{
#ifndef NDEBUG
Cerr<<”staring main”<<endl;
#endif
}
如果NDEBUG未定义,那么程序就会将信息写到cerr中。如果NDEBUG已经定义了,那么程序执行时就会跳过#ifndef和#endif之间的代码。
默认情况下,NDEBUG未定义,这也意味着必须执行#ifndef和#endif之间的代码。在开发程序的过程中,只要保持NDEBUG未定义,就会执行其中的调试语句。开发完成之后,要将程序交付客户时,可通过定义NDEBUG预处理变量,删除这些调试语句,大多数编译器提供定义NDEBUG的命令行选项:
$: CC –NDEBUG main.c
这也的命令行等效于在mian.c的开头提供#define NDEBUG预处理命令。
与处理器还定义了其余四种在调试时非常有用的常量。
__FILE__文件名
__LINE__当前行号
__TIME__文件被编译的时间
__DATA__文件被编译的日期
可使用这些常量在错误信息中提供更多的信息。
另一个常见的调试技术是使用NDEBUG预处理变量以及assert(断言)预处理宏。程序员常用assert来测试不可能发生的条件。