zoukankan      html  css  js  c++  java
  • C语言预处理命令之条件编译

    在C语言中,预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。

    条件编译指令将决定哪些代码被编译,哪些是不被编译的。可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件。

    下面是部分预处理指令:

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

    1.#if指令

    #if 指令检测跟在后面的常量表达式,如果表达式为真,则编译后面的代码,直到出现#else、#elif或#endif为止;否则就不编译。

    2.#endif指令

    #endif用于终止#if预处理指令。

    #include<stdio.h>
    #define DEBUG 0
    int main()
    {
        #if DEBUG
        printf("Debugging
    ");
        #endif
        printf("Running
    ");
        return 0;
    }

    由于程序定义DEBUG宏代表0,所以#if条件为假,不编译后面的代码直到#endif,所以程序直接输出Running。

    如果去掉#define语句,效果是一样的。

    3.#ifdef和#ifndef

    #include<stdio.h>
    #define DEBUG
    int main()
    {
        #ifdef DEBUG
        printf("YES
    ");
        #endif
        #ifndef DEBUG
        printf("NO
    ");
        #ednif
        return 0;
    }

    #ifdefined等价于#ifdef;#if!defined等价于#ifndef

    4.#else指令

    #else指令用于某个#if指令之后,当前面的#if指令的条件不为真时,就编译#else后面的代码。#endif指令将终止上面的条件块。

    #include<stdio.h>
    #define DEBUG
    int main()
    {
        #ifdef DEBUG
        printf("Debugging
    ");
        #else
        printf("Notdebugging
    ");
        #endif
        printf("Running
    ");
        return 0;
    }

    5.#elif指令

    #elif预处理指令综合了#else和#if指令的作用。

    #include<stdio.h>
    #define TWO
    int main()
    {
        #ifdef ONE
        printf("1
    ");
        #elif defined TWO
        printf("2
    ");
        #else
        printf("3
    ");
        #endif
        return 0;
    }

    程序很好理解,最后输出结果是2。

  • 相关阅读:
    C# 为WebBrowser设置代理,打开网页
    C# WebBrowser 设置代理完全解决方案
    java读取文件的几种方式性能比较
    .NET 对文件和文件夹操作的介绍
    java利用反射打印出类的结构
    java输出月的日历控制台
    java 实现二分查找算法
    java实现快速排序
    解决window 12 service 不能调用excel ,报"System.Runtime.InteropServices.COMException (0x800A03EC)
    3 webpack 4 加vue 2.0生产环境搭建
  • 原文地址:https://www.cnblogs.com/wuyudong/p/3669754.html
Copyright © 2011-2022 走看看