Debugging - Instrumentation - Use macro

#ifdef DEBUG printf... #endif

编译程序时候使用-DDEBUG选项来定义DEBUG宏从而包含调试代码。

 

更复杂的宏变量可以像下面这样定义:

#define BASIC_DEBUG 1 #define EXTRA_DEBUG 2 #define SUPER_DEBUG 4 #if (DEBUG & EXTRA_DEBUG) printf... #endif

这种情况下,依然需要使用DEBUG宏, 但是现在可以设置它的值来决定调试的等级。

 

编译选项-DDEBUG=5表示开启BASIC_DEBUG和SUPER_DEBUG,关闭EXTRA_DEBUG。

编译选项-DDEBUG=0表示关闭所有调试信息。

 

下面的代码简化了编译选项,如果没有定义DEBUG,那么默认没有调试信息。

#ifndef DEBUG #define DEBUG 0 #endif

 

 

预处理器中定义了一些宏来帮助显示调试信息。下面的这些宏可以显示当前编译的信息:

__LINE__ //当前行号 __FILE__ //当前文件名 __DATE__ //编译文件的日期 __TIME__ //编译文件的时间

 

 

例子:

#include <stdio.h> #include <stdlib.h> int main() { #ifdef DEBUG printf("Compiled: " __DATE__ " at " __TIME__ "/n"); printf("This is line %d of file %s/n", __LINE__, __FILE__); #endif printf("Hello world/n."); exit(0); }

 

编译这个程序的时候,使用-DDEBUG选项,就可以输出额外的调试信息。

你可能感兴趣的:(Debugging - Instrumentation - Use macro)