C语言的条件编译

       指令            用途

                 空指令,无任何效果
        #include   
包含一个源代码文件
        #define    
定义宏
        #undef     
取消已定义的宏
        #if        
如果给定条件为真,则编译下面代码
        #ifdef     
如果他后面的宏值之前已经定义,则编译下面代码
        #ifndef    
如果宏没有定义,则编译下面代码
        #elif      
如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
        #endif     
结束一个#if……#else条件编译块
        #error     
停止编译并显示错误信息

       #error         将使编译器显示一条错误信息,然后停止编译。
        #line
           可以改变编译器用来指出警告和错误信息的文件号和行号。
       #pragma
     没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息。 


条件编译指令将决定哪些代码被编译,而哪些是不被编译的。可以根据表达式的值或者某个特定的宏被定义的内容来确定编译条件
    1.#if
指令
        #if
指令检测跟在他后边的常量表达式是否为真。如果表达式为真,则编译后面的代码,直到出现#else#elif#endif为止;否则就不编译。
    2.#endif
指令
       #endif
用于终止#if预处理指令。

           #define DEBUG 0
           main()
           {
               #if DEBUG
                   printf("Debugging\n");
               #endif
                   printf("Running\n");
           }

       由于程序定义DEBUG宏代表0,所以#if条件为假,不编译后面的代码直到#endif,所以程序直接输出Running
       
如果去掉#define语句,效果是一样的。
    3.#ifdef
#ifndef

      ifdef表示它后面的宏如果是之前定义的宏就执行下面语句,ifndef表示如果不是它后面的宏就执行下面语句。 这两个可以单独使用。     

      #define DEBUG

        main()
        {
           #ifdef DEBUG
               printf("yes\n");
           #endif
           #ifndef DDEBUG
               printf("no\n");
           #endif
        }


结果会是

yes

no

      

        #ifdefined等价于#ifdef; #if !defined等价于#ifndef
    4.#else
指令
        #else
指令用于某个#if指令之后,当前面的#if指令的条件不为真时,就编译#else后面的代码。

        #define DEBUG

        main()
        {
           #ifdef DEBUG
               printf("Debugging\n");
           #else
               printf("Not debugging\n");
           #endif
               printf("Running\n");
       }

    5.#elif指令

        就像语句中的else if语句。

        #define TWO

        main()
        {
           #ifdef ONE
               printf("1\n");
           #elif defined TWO     //defined不能少,它后面有一个d。
               printf("2\n");
           #else
               printf("3\n");
           #endif
        }
结果:2

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值