有关预处理器命令
1.#define  定义编译期间的常量
2.#undef 取消编译期间的常量
3.#ifdef (条件编译)
#else
#endif
看下面的一个例子:
 DPRINTK( "adc opened\n");    //执行后的结果为:"当前函数 当前行:adc opened"
DPRINTK( "adc opened\n");    //执行后的结果为:"当前函数 当前行:adc opened"
2.#undef 取消编译期间的常量
3.#ifdef (条件编译)
#else
#endif
看下面的一个例子:
#undef DEBUG   //取消DEBUG常量
#define DEBUG //定义DEBUG常量,表达执行程序时有调试结果
#ifdef DEBUG //如果已经定义了DEBUG常量(调试时)
#define DPRINTK(x ) {printk(__FUNCTION__"(%d): ",__LINE__);printk(##x);}   //定义DPRINTK常量,会输出当前函数,当前行.
) {printk(__FUNCTION__"(%d): ",__LINE__);printk(##x);}   //定义DPRINTK常量,会输出当前函数,当前行.
#else //没有定义DEBUG常量,则不输出当前函数之类的调试结果
#define DPRINTK(x ) (void)(0)
) (void)(0)
#endif
__FUNCTION__,__LINE__是预定义的宏.另外,"x...",printk(##x)表达本身结果.#define DEBUG //定义DEBUG常量,表达执行程序时有调试结果
#ifdef DEBUG //如果已经定义了DEBUG常量(调试时)
#define DPRINTK(x
 ) {printk(__FUNCTION__"(%d): ",__LINE__);printk(##x);}   //定义DPRINTK常量,会输出当前函数,当前行.
) {printk(__FUNCTION__"(%d): ",__LINE__);printk(##x);}   //定义DPRINTK常量,会输出当前函数,当前行.#else //没有定义DEBUG常量,则不输出当前函数之类的调试结果
#define DPRINTK(x
 ) (void)(0)
) (void)(0)#endif
 DPRINTK( "adc opened\n");    //执行后的结果为:"当前函数 当前行:adc opened"
DPRINTK( "adc opened\n");    //执行后的结果为:"当前函数 当前行:adc opened" 
                    
                 
