C语言基础:C语言宏定义(3) - 条件编译

上一节我们讲解了带参数和不带参数的宏定义, 这次我们来讲解条件编译, 什么是条件编译呢? 我们来看看吧


下面我们来看看例子:

#include <stdio.h>

int main()
{
    int a = 10;
    
    if (a == 10)
    {
        printf("a是10\n");
    }
    else if(a == 5)
    {
        
    }
    else
    {
        
    }
    
    return 0;
}


上面这种其实就是条件编译, 但这种条件编译有一个问题, 在编译的时候, 编译器不会选择性编译, 而是全部都编译进去, 再来判断条件, 下面我们来看看宏定义的条件编译:


#include <stdio.h>

#define A 10

int main()
{
#if (A==10)
    printf("a是10\n");
#elif (A==5)
    printf("a是5\n");
#else
    printf("a是其他\n");
#endif    
    return 0;
}
宏定义的条件编译只能用于宏定义, 不能用于变量, 而且, 一旦宏定义满足其中一个条件, 那么就只会编译这一句代码, 而其他的条件就不会参与编译, 还有就是在写完条件编译之后, 一定一定要加上#endif, 否则就和main函数少了一个大括号一样, 会出错.



其他的用法, 比如:

#if define A
    code;
#endif
意思是, 如果定义了这个宏, 那么就执行code.


#if !define A
    code;
#endif
意思是, 如果没有定义这个宏, 那么就执行code.



还有#ifdef#ifndef和上面两种用法是一致, 这里就不多说了~~



好了, 这次我们就讲到这里, 下次我们继续~~~

posted @ 2015-01-10 21:34  背着吉他去流浪  阅读(230)  评论(0编辑  收藏  举报