码迷,mamicode.com
首页 > 其他好文 > 详细

预处理的几个问题

时间:2017-05-12 20:12:40      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:lin   也会   执行   多层嵌套   define   deb   oid   重复包含   实现   

一:解决块注释/**/不能嵌套的问题:

    我们知道行注释//可以多层嵌套和逐层取消,而块注释/**/不能嵌套或不能与//混用,否则有可能出现编译错误。通常我们在程序调试时如果要取消一大段代码,可以用条件编译#if 0  #endif实现

二:避免头文件的重复包含:

     假如a.h中自定义了一个结构体,在b.h和c.h中都又自定义了一个结构体(其成员有a.h的结构体内容,所以b.h和c.h都包含了a.h),而在.c中又用到了b.h和c.h的结构体(所以包含了b.h和c.h),此时因为多次包含了a.h所以编译器会报错,此时只要在a.h中使用#ifndef _debug__  #define _debug__ ....#endif.

三 宏的嵌套包含:

 #define AA 1

 #define BB 1

void main(void)

{

    #ifdef AA

        ……

          #if BB   //嵌套的宏,这里不能再用#ifdef,

              ……   //否则BB是0也会执行这些代码,

          #else   //而这#else不会被执行

              ……

          #endif

    #else

        ……

    #endif

}

或者这样也行

#define AA   //使用宏定义做控制开关,此时#ifdef可嵌套

#define BB   //使用宏定义做控制开关,要关闭时,直接注释掉

int main()

{

    #ifdef AA

        ……

        #ifdef BB   //嵌套的宏,如果定义了,则执行

            ……       

        #else  

            ……

        #endif

    #else

        ……

    #endif

}

预处理的几个问题

标签:lin   也会   执行   多层嵌套   define   deb   oid   重复包含   实现   

原文地址:http://www.cnblogs.com/jieruishu/p/6846895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!