C语言的#if #ifdef #ifndef
#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的更多相关文章
- C/C++预处理指令#define,#ifdef,#ifndef,#endif…
2016年12月29日更新: 今天查看以前文件的时候, 突然发现了#error 这个预处理指令.然后回想一下工作, 发现这个指令使用场景还是很多的.比如: 一个项目的模块儿之多,源文件之大,代码之多, ...
- C/C++预处理指令#define,#ifdef,#ifndef,#endif… (转)
本文转自博文C/C++预处理指令#define,#ifdef,#ifndef,#endif….这篇博文写得特别好,特转载. 本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何 ...
- C 和 Object-C中的 #ifdef #ifndef
很多宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时 ...
- C/C++预处理指令#include,#define,#undef,#if,#ifdef,#ifndef,#elif,#endif,#error......
本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下 ...
- iOS 小知识 - #if , #ifdef , #ifndef.
Q : 在项目的 .h 文件中, #ifndef XXX_h #define XXX_h //程序段1 #endif /* XXX_h */ 的作用? A : 如果 XXX.h 不存在,就引入 XX ...
- c语言中的#ifdef和#ifndef
#include "stdio.h"#include "conio.h"#define MAX#define MAXIMUM(x,y) (x>y)?x:y ...
- c语言之【#ifdef】
电脑程序语句,我们可以用它区隔一些与特定头文件.程序库和其他文件版本有关的代码. 1 2 3 #ifdef 语句1 // 程序2 #endif 可翻译为:如果宏定义了语句1则程序2. 作用:我 ...
- 史上最全条件编译解析 #ifdef #ifndef #undef #else #endif
C语言和C++语言程序中广泛存在着#ifdef或#ifndef等条件编译语句,本篇就系统介绍下他们的用法. 这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分 ...
- C++ #if #endif #define #ifdef #ifndef #if defined #if !defined详解 (转)
(源)http://blog.csdn.net/sky1203850702/article/details/42024673 首先,让我们先从头文件开始,在很多头文件里,我们会看到这样的语句 #ifn ...
随机推荐
- (Code) Python implementation of phrase extraction from sentence
import os import numpy as np import pandas as pd from tqdm import tqdm import numpy as np import str ...
- ssh 框架整合事,使用注解,action提示找不到
There is no Action mapped for namespace [/] and action name [/select] associated with context path [ ...
- 承接微信小程序外包 H5外包就找北京动点软件开发团队
承接小程序外包 微信小程序外包 H5外包 就找北京动点软件 长年承接微信小程序.微信公众号开发 全职的H5开发团队,开发过几十款微信小程序公众号案例 欢迎来电咨询,索取案例! QQ:372900288 ...
- Premiere Pro 中的键盘快捷键
官网地址:https://helpx.adobe.com/cn/premiere-pro/using/default-keyboard-shortcuts-cc.html?mv=product& ...
- IDEA 介绍
转载:https://blog.csdn.net/kanchaishaonian/article/details/81107210 前言:IntelliJ IDEA 如果说IntelliJ IDEA是 ...
- HADOOP高可用机制
HADOOP高可用机制 HA运作机制 什么是HA HADOOP如何实现HA HDFS-HA详解 HA集群搭建 目标: 掌握分布式系统中HA机制的思想 掌握HADOOP内置HA的运作机制 掌握HADOO ...
- ieda 快捷键修改方法
框中意思为: 1.增加快捷键 2.增加缩写
- js用解构来定义变量并赋值
解构数组 var [a,b]=[1,2]; a //1 b //2 ------------- var [a,b]=[1,2,3,4]; a //1 b //2 ---------------- va ...
- java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决
java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决 博客分类: 问题 ApacheJavaTo ...
- Myeclipse6.5每次打开properties中文注释都会变成乱码
发现无论怎么写properties注释,只要重新打开me就会出现乱码.默认properties是不支持中文的.所以最好用英文写properties文档.也可以写好直接翻译.已经写好的乱码直接拖到Chr ...