#if #ifedf #ifndef

   —般情况下,C语言源程序中的每一行代码.都要参加编译。但有时候出于对程序代码优化的考虑.希望只对其中一部分内容进行编译.此时就需要在程序中加上条件,让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就是条件编译!

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

  条件编译里面有判断语句,比如 #if 、#else 、#elif 都由#endif结束

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

  

#include<CHAP01.h>

#define i -1

void main()
{
#if (i > 0)
{
printf("%d\n", i);
printf("You defined stone!\n");
}

#elif (i == 0)
{
printf("%d\n", i);
printf("You defined river!\n");
}

#else
{
printf("%d\n", i);
printf("You defined NULL!\n");
}

#endif
}

#include<CHAP01.h>

#define i -1

void main()
{
// int i;        条件编译的条件一般由 #define 去定义, int 类型的变量不能起到效果
// scanf_s("%d", &i);
#if (i > 0)
{
printf("%d\n", i);
printf("You defined stone!\n");
} #elif (i == 0)
{
printf("%d\n", i);
printf("You defined river!\n");
} #else
{
printf("%d\n", i);
printf("You defined NULL!\n");
} #endif
}

  #ifdef   判断宏是否定义, 是就执行ifdef下的代码, 否则执行else下的代码

#include<CHAP01.h>

//#define stone

#ifdef stone
void main()
{
printf("You defined stone!\n");
}
#else
void main()
{
printf("You defined NULL!\n");
}
#endif

  #ifndef    一般用于检查定义, 防止重复定义

  #ifndef stone             // 如果VALUE没有被定义
  #define stone1000 // 定义VALUE 为1000
  #endif

  自我理解, 不对的地方请指正!

  

 

C语言的#if #ifdef #ifndef的更多相关文章

  1. C/C++预处理指令#define,#ifdef,#ifndef,#endif…

    2016年12月29日更新: 今天查看以前文件的时候, 突然发现了#error 这个预处理指令.然后回想一下工作, 发现这个指令使用场景还是很多的.比如: 一个项目的模块儿之多,源文件之大,代码之多, ...

  2. C/C++预处理指令#define,#ifdef,#ifndef,#endif… (转)

    本文转自博文C/C++预处理指令#define,#ifdef,#ifndef,#endif….这篇博文写得特别好,特转载. 本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何 ...

  3. C 和 Object-C中的 #ifdef #ifndef

    很多宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时 ...

  4. C/C++预处理指令#include,#define,#undef,#if,#ifdef,#ifndef,#elif,#endif,#error......

    本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下 ...

  5. iOS 小知识 - #if , #ifdef , #ifndef.

    Q : 在项目的 .h 文件中, #ifndef XXX_h #define XXX_h //程序段1 #endif  /* XXX_h */ 的作用? A : 如果 XXX.h 不存在,就引入 XX ...

  6. c语言中的#ifdef和#ifndef

    #include "stdio.h"#include "conio.h"#define MAX#define MAXIMUM(x,y) (x>y)?x:y ...

  7. c语言之【#ifdef】

    电脑程序语句,我们可以用它区隔一些与特定头文件.程序库和其他文件版本有关的代码. 1 2 3 #ifdef 语句1     // 程序2 #endif 可翻译为:如果宏定义了语句1则程序2. 作用:我 ...

  8. 史上最全条件编译解析 #ifdef #ifndef #undef #else #endif

    C语言和C++语言程序中广泛存在着#ifdef或#ifndef等条件编译语句,本篇就系统介绍下他们的用法. 这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分 ...

  9. C++ #if #endif #define #ifdef #ifndef #if defined #if !defined详解 (转)

    (源)http://blog.csdn.net/sky1203850702/article/details/42024673 首先,让我们先从头文件开始,在很多头文件里,我们会看到这样的语句 #ifn ...

随机推荐

  1. express之req res

    request对象和response对象 Request req.baseUrl 基础路由地址 req.body post发送的数据解析出来的对象 req.cookies 客户端发送的cookies数 ...

  2. MongoDB 索引 explain 分析查询速度

    一.索引基础索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快.MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询优化技巧.下面是创建索引 ...

  3. [转载]如何快速下载、安装和配置chromedriver ?

    转自:https://jingyan.baidu.com/album/f7ff0bfcdd89ed2e27bb1379.html?picindex=7 下载地址: http://npm.taobao. ...

  4. kali虚拟机添加共享文件夹

    1.保证安装了vmtools 2.在虚拟机本身设置共享文件夹,如图 其中选的这个文件夹就是宿主机里待共享的文件夹. 3,在kali里启用它: vmhgfs-fuse .host:[宿主机文件夹] /m ...

  5. 《SQL 基础教程》第八章:SQL 高级处理

    本章分为两个部分: 窗口函数 GROUPING 运算符 它们用于以「窗口」为单位的排序.计算总和等任务. OLAP 函数 OLAP 定义:OLAP 是 OnLIne Analytical Proces ...

  6. php 类名和方法名相同(构造函数)

    //php 5.6class father{ public function __construct() { echo __METHOD__; }} class son extends father{ ...

  7. Envoy 源码分析--buffer

    目录 Envoy 源码分析--buffer BufferFragment RawSlice Slice OwnedSlice SliceDeque UnownedSlice OwnedImpl Wat ...

  8. PAT 1140 Look-and-say Sequence

    1140 Look-and-say Sequence (20 分)   Look-and-say sequence is a sequence of integers as the following ...

  9. docker容器自动化部署(一)

    1.docker容器暴露多个端口 To expose just one port, this is what you need to do: docker run -p <host_port&g ...

  10. python - 闭包,迭代器

    一.第一类对象 1.函数名的运用     函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量     1.函数名的内存地址 def func1(): print('你是谁,你来自哪里 ...