C语言 (条件编译#ifdef、#ifndef) (#if 常量,#if 1,#if 0)的用法
当屏蔽掉大块代码时,使用"#if 0"
比使用"/**/"
要好,因为用"/**/"
做大段的注释要防止被注释掉的代码中有嵌套的"/**/"
,这会导致注释掉的代码区域不是你想要的范围,当被注释掉的代码很大时容易出现这种情况,特别是过一段时间后又修改该处代码时更是如此。
文章目录
- 不嵌套情况
- 1. 情况1:
- 2.情况2:
- 3.情况3:
- 二、 嵌套情况
- 1、情况1
不嵌套情况
1. 情况1:
#ifdef _XXXX...程序段1...#else...程序段2...#endif
这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。
2.情况2:
#ifndef _XXXX...程序段1...#else...程序段2...#endif
这里使用了#ifndef,表示的是if not def。当然是和#ifdef相反的状况(如果没有定义了标识符_XXXX,那么执行程序段1,否则执行程序段2)。
3.情况3:
#if 常量...程序段1...#else...程序段2...#endif
这里表示,如果常量为真(非0,随便什么数字,只要不是0),就执行程序段1,否则执行程序段2。
二、 嵌套情况
1、情况1
#if 常量a...程序段1...
#else#if 常量b...程序段2...#else...程序段3...#endif#endif
这里表示,如果常量a为真(非0,随便什么数字,只要不是0),就执行程序段1。当常量a为0,常量b为真时,执行程序段2;
当常量a为0,常量b为0时,执行程序段3;
参考文章:#if 0/#if 1用法
C语言 (条件编译#ifdef、#ifndef) (#if 常量,#if 1,#if 0)的用法相关推荐
- c语言常用的条件编译,C语言条件编译
使用与平台有关的C语言函数,可能会使得程序不具有可移植性.比如Socket编程.多线程编程等是与平台有关的. 若想将程序做成平台无关的就需要用到与平台相关的条件编译. 编译器 GCC #ifdef _ ...
- C语言中-条件编译#ifdef的妙用详解_透彻
本文主要介绍c语言中条件编译相关的预编译指令,包括 #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define ...
- uni-app条件编译:#ifdef #ifndef #endif
uni-app条件编译:#ifdef #ifndef #endif 语法: // #ifdef %PLATFORM% 这些代码只在该平台编译 // #endif #ifdef : if defined ...
- C语言中宏定义宏编译的使用#if,#ifdef,#ifndef,#elif,#else,#endif,defined使用详解,可以实现和if else一样的效果
#define 定义一个预处理宏 #undef 取消宏的定义 #if 编译预处理中的条件命令,相当于C语法中的if语句 ...
- 条件编译#ifdef的妙用详解
本文主要介绍c语言中条件编译相关的预编译指令,包括 #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define ...
- c语言条件编译的例子,C语言条件编译分析实例
C语言条件编译分析实例 1.利用#ifdef / #endif 将程序功能模块包括进去,以向某用户提供该功能. 在程序首部定义#define HNLD: #ifdef HNLD include&quo ...
- c语言 条件编译注释,c语言的预处理/条件编译,最全整理看这里
语言的编译过程中第一步进行的就是预编译了,预编译中就是执行#开头的语句,这些处理就是本篇总结的知识点,预处理和条件编译. 通俗的讲预处理就是编译器自动的帮我们上去整理一遍代码,它依据的规则(我们交代 ...
- 【Scripts系列】之Makefile中条件分支ifeq/else/endif/else ifeq/ifneq/ifdef/ifndef用法详解
DATE: 2019-2-22 前言 条件分支的用法在任何编程语言和脚本以及逻辑中都广泛使用.前文讲述过C语言中预处理的条件编译#ifdef/#if/#elif/#else/#endif用 ...
- #if, #ifdef, #ifndef, #else, #elif, #endif的用法
#ifdef的用法 灵活使用#ifdef指示符,我们可以区隔一些与特定头文件.程序库和其他文件版本有关的代码. 代码举例:新建define.cpp文件 #include "iostream. ...
最新文章
- Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender
- WCF关于svcutil生成关于TCP绑定出现 元数据包含无法解析的引用:“net.tcp://127.0.0.1:9999/xxxx/”的解决方案...
- 生成树的计数 Matrix-Tree(矩阵树)定理
- PyCharm——turtle库的画布悬停解决方案
- 女程序员被阿里录取工资二万六,辞职时被领导挽留:给你四万留下
- 任意整数分频(图文并茂)
- 《 Python树莓派编程》——2.7 总结
- matlab 归一化_机器学习中如何用Fscore进行特征选择(附Matlab代码)
- C#.NET DataGridView 让部分单元格变成只读的例子程序
- mac的终端通过ssh远程连接Linux服务器
- 适配器模式之享元模式
- 6.0后,全局悬浮窗或者弹窗不显示的解决办法
- Tomcat下载及配置(IDEA)
- Java例15.13——使用MVC结构计算三角形面积
- SVCHOST启动服务实战
- 千呼万唤始出来,犹抱琵琶半遮面——python变量和数据类型
- 植物大战僵尸对战版(Android)
- R语言进行中文分词和聚类
- Adlik在深度学习异构计算上的实践
- 上云安全建设之CDN安全防护
热门文章
- android面试题总结加强版
- 选购个人计算机小结,计算机实训小结精选 .doc
- 前端能读取压缩包内容吗?_解决前端多环境部署的痛点
- 华为云客户端_效果图云渲染已成趋势,云渲染如何选择?
- 【MM配置】Batch Determination 批次决定
- expdp / impdp 用法详解
- ABAP RANGE 实现 SELECTION-OPTION 功能
- SAP FI配置关键点
- 项目经理的十二条规则
- 编写一个函数实现从 1 到 n 共 n 个数的累加_leetcode306_go_累加数