精华内容
下载资源
问答
  • C语言条件编译

    2019-12-14 15:19:44
    C语言条件编译 概念: 通常情况下,一个C语言源程序的所有非注释语句都要经过编译产生目标代码。但是有时希望对源程序中的部分代码只有在一定的条件下才进行编译,或希望当满足某个条件下对一部分语句进行编译,而当...

    C语言条件编译

    概念:
    通常情况下,一个C语言源程序的所有非注释语句都要经过编译产生目标代码。但是有时希望对源程序中的部分代码只有在一定的条件下才进行编译,或希望当满足某个条件下对一部分语句进行编译,而当条件满足时对另一部分语句进行编译。这种可以按不同的编译条件去编译不同的程序部分,因而产生不同的目标代码文件的功能称为条件编译。C语言预处理程序提供了条件编译的功能,这对于程序的移植共和调试时很有用的。
    C语言常用的条件编译有一下三种形式:

    • 第一种
    #ifdef 标识符
    	程序段1
    #else
    	程序段2
    #ednif
    

    应用第一种条件表达式

    #include<stdio.h>
    #include<stdlib.h>
    #define Num 100 //定义无参数的宏
    struct Student
    {
    	int number;
    	char *name;
    	char *address;
    } *ps;
    
    int main()
    {
    ps=(struct Student*)malloc(sizeof(struct Student));
    ps->number=28;
    ps->name="Transformer";
    ps->address="xia men";
    #ifdef Num
    	printf("Number=%d\n Name=%s\n Address=%s",ps->number,ps->name,ps->address);
    #else
    	printf("Name=%s\tNumber=%d\tAddress=%s",ps->name,ps->number,ps->address);
    #endif
    free(ps);
    return 0;
    }
    
    

    因为程序中加入了条件编译预处理命令,因此要根据NUM是否被定义过来决定应该编译那条语句。在此例子中,因为NUM事先被定义过,所以编译器会编译第一个输出语句,当然最后的运行结果也是第一条语句。

    他的功能是:如果标识符已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译

    • 第二种
    #ifndef 标识符
    	程序段1
    #else
    	程序段2
    #endif
    

    他的功能是:如果标识符未被#define定义过则对编译程序段1,否则编译程序段2.与第一种形式正好相反

    • 第三种
    #if 常量表达式
    	程序段
    #else
    	程序段2
    #endif
    

    应用第一种条件表达式

    #include<stdio.h>
    #define NUm 10
    #define PRINT1 printf("%x\n",i)
    #define PRINT2 printf("%o\n",i)
    int main()
    {
    	int i=123;
    #if NUM
    	PRINT1;
    #else
    	PRINT2;
    #endif
    return 0;
    }
    

    他的功能是:如果常量表达式的值为真编译程序段1,否则编译程序段2

    展开全文
  • C语言 条件编译

    2019-11-12 16:52:16
    if是C语言中的关键字,它根据表达式的计算结果来决定是否执行该分支的语句,它的每个分支都是编译了的。 #define A 0 //把A定义为0 if (A > 1) printf("A > 1"); //编译器编译该语句,但因为A == 0...

    一、内容

    • if
    • #if
    • #ifdef
    • #ifndef
    • #if defined
    • #if !defined

    二、if

    if是C语言中的关键字,它根据表达式的计算结果来决定是否执行该分支的语句,它的每个分支都是编译了的。

    #define A 0  //把A定义为0
    if (A > 1)
         printf("A > 1");   //编译器编译该语句,但因为A == 0 未执行
    else if(A == 1)
       printf("A == 1");  //编译器编译该语句,但因为A == 0 未执行
    else
       printf("A < 1");  //编译器编译该语句,因为A == 0 故执行

    三、#if

    条件编译是C语言中预处理部分的内容,它是编译器编译代码时最先处理的部分。

    条件编译里面的判断语句,包括 #if 、#else 、#elif 及 #endif;

    它的意思是如果宏条件符合,编译器就编译这段代码,否则,编译器就忽略这段代码而不编译

    #define  A 0  //把A定义为0
    #if (A > 1)
             printf("A > 1");  //编译器没有编译该语句,该语句不生成汇编代码
    #elif (A == 1)
             printf("A == 1"); //编译器没有编译该语句,该语句不生成汇编代码
    #else
             printf("A < 1");   //编译器编译了这段代码,且生成了汇编代码,执行该语句
    #endif

    四、#ifdef / #if defined

    #ifdef和#if defined()的用法一致 
    #ifndef和#if !defined()的用法一致

    #if defined括号中是一个宏,它不管括号中的逻辑是“真”还是“假”,它只看该程序前边是否有定义这个宏,如果有,则编译该分支,若没有,则直接忽略,不编译。

    另外 #if defined(x)可以取反,也就用 #if !defined(x)

    展开全文
  • c语言条件编译指令用法c语言条件编译指令用法
  • c语言条件编译详解

    2011-09-23 17:50:22
    c语言条件编译详解,非常有用的资料,讲解得很好
  • C语言条件编译语句and单片机DMA的介绍 C语言条件编译: 这里面介绍的很详细,也有历程。 DMA的介绍: 介绍了单片机中为什么要使用DMA,以及使用了DMA对于单片机有哪些优点。

    C语言条件编译语句and单片机DMA的介绍

    C语言条件编译:在这里插入图片描述
    这里面介绍的很详细,也有历程。

    DMA的介绍:在这里插入图片描述
    介绍了单片机中为什么要使用DMA,以及使用了DMA对于单片机有哪些优点。

    展开全文
  • C语言#if教程#if 后面可以接常量表达式,如果常量表达式的值为真(非0),则对一段程序进行编译,否则对另一段程序进行编译。因此可使程序在不同条件下,完成不同的功能。C语言#if详解语法#if expressioncode1#endif...

    C语言#if教程

    #if 后面可以接常量表达式,如果常量表达式的值为真(非0),则对一段程序进行编译,否则对另一段程序进行编译。因此可使程序在不同条件下,完成不同的功能。

    C语言#if详解

    语法

    #if expression

    code1

    #endif

    说明

    如果表达式 expression 为真,那么就编译代码 code1,否则就不编译。

    语法

    #if expression

    code1

    #else

    code2

    #endif

    说明

    #if 也可以配合 #else 一起使用,这里说明,如果常量表达式 expression 为真,那么就编译代码 code1,否则就编译代码 code2。

    案例

    C语言#if

    使用 #if 条件编译,执行编译代码

    #include

    int main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    #define compile 1

    #if compile

    printf("Start compile\n");

    #endif

    return 0;

    }

    程序运行后,控制台输出如下图所示:

    1H6d3zdGuJpxLAAAAAElFTkSuQmCC

    我们首先使用了 #if 来判断宏 compile 是否为真,如果为真,则执行

    #include

    int main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    #define compile 0

    #if compile

    printf("Start compile\n");

    #endif

    return 0;

    }

    程序运行后,控制台输出如下图所示:

    wFZqNluZ18y3wAAAABJRU5ErkJggg==

    这次,我们使用了 #define 定义了 compile 宏为 0,此时,再次执行该程序,程序未执行 printf 代码。

    C语言#if

    使用 #if 和 #else 执行不同的编译代码

    #include

    int main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    #define compile 0

    #if compile

    printf("Start compile\n");

    #else

    printf("Do not compile\n");

    #endif

    return 0;

    }

    程序运行后,控制台输出如下图所示:

    QejAAAAAElFTkSuQmCC

    我们首先使用了 #if 来判断宏 compile 是否为真,如果为真,则执行第一个 printf 对应的代码,如果为假,那么就执行第二个 printf 代码。

    因为,我们定义了 compile 宏为 0,所以执行了第二个 printf 代码。现在,我们修改程序如下:

    #include

    int main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    #define compile 1

    #if compile

    printf("Start compile\n");

    #else

    printf("Do not compile\n");

    #endif

    return 0;

    }

    程序运行后,控制台输出如下图所示:

    ZO0IAAPAN3X0Ei8WDBQoAALhDAXmQAgIAAM9TQB6kgAAAwPMUEAAA4DQKCAAAcBoFBAAAOI0CAgAAnEYBAQAATqOAAAAAp1FAAACA0yggAADAaRQQAADgNAoIAABwGgUEAAA4x9vtf5rnBewGVKvmAAAAAElFTkSuQmCC

    这次,我们看到,执行了第一个 printf 的代码。

    C语言#if教程总结

    C 语言的 #if 后面可以接常量表达式,如果常量表达式的值为真(非0),则对一段程序进行编译,否则对另一段程序进行编译。因此可使程序在不同条件下,完成不同的功能。

    展开全文
  • c语言条件编译精讲

    2012-08-30 14:11:27
    介绍了c语言条件编译的几种形式及其使用方法
  • c语言条件编译#ifdef与#if defined c语言条件编译#ifdef与#if defined 摘自:https://www.cnblogs.com/zhangshenghui/p/5669208.html defined NAME是用来判断NAME是否被定义了(被用define定义了)。#ifdef...
  • 条件编译是指预处理器根据条件编译指令,有条件地选择源程序代码中的一部分代码作为输出,送给编译器进行编译。主要是为了有选择性地执行相应操作,防止宏替换内容(如文件等)的重复包含。常见的条件编译指令如表 1...
  • C语言条件编译详解

    2017-05-10 18:49:55
    条件编译0.前言 本文章的程序是在linux下测试通过的 本文的分析通过了下面的命令来查看预编译结果 gcc -E filename.c -o filename.i 这条命令的作用是生成预处理文件filename.i gcc -S filename.c -o ...
  • C语言条件编译例程

    2018-03-15 10:53:24
    1.条件编译概念:一般情况下,源代码文件中的所有行都参加编译,但有时需要指定一部分代码在某个条件下才被编译,这就叫做条件编译。2、条件编译详解条件编译发生在预处理阶段,在C中,主要通过#if、#elif、#else、#...
  • 若想将程序做成平台无关的就需要用到与平台相关的条件编译。编译器GCC#ifdef__GNUC__#if __GNUC__ >= 3 // GCC3.0以上Visual C++#ifdef_MSC_VER(非VC编译器很多地方也有定义)#if _MSC_VER >=1000 /...
  • 2. C语言条件编译

    千次阅读 2018-04-29 11:22:45
    1. 条件编译 1.1 判断是否被定义 #define __DEBUG__ 1 // 如果定义了 __DEBUG__ 宏定义,才会进行接下来的编译 #ifdef __DEBUG__ // ==&gt;#if !defined(__DEBUG__) 语句; #endif 1.2 条件编译 ...
  • C语言由源代码生成的各阶段的作用 1、编译预处理阶段的作用 (1)读取c源程序,对伪指令(以#开头的指令)和特殊符号进行处理。预处理过程先于编译器对源代码进行处理。 (2)删除注释。 (3)检查包含预处理...
  • c语言条件编译#ifdef与#if defineddefined NAME是用来判断NAME是否被定义了(被用define定义了)。#ifdef NAME == #if defined(NAME)#ifndef NAME == #if !defined(NAME)但是在处理双重和多重判断时,defined的优势就...
  • C语言条件编译指令

    千次阅读 2012-11-16 10:30:34
    学了C语言和C++已经三个年头了,但是对于条件编译指令还不是很了解,看到Linux平台下地一些优秀的源代码,诸如uC/OS-II等用到了很多编译指令,MFC内部也用到了条件编译指令,现在把我学到的一些条件编译指令做下总结...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 94,894
精华内容 37,957
关键字:

c语言条件编译

c语言 订阅