本文主要介绍c++中条件编译相关的预编译指令,包括 #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined。

#define 定义一个预处理宏
#undef 取消宏的定义

#if 编译预处理中的条件命令,相当于C语法中的if语句
#ifdef 判断某个宏是否被定义,若已定义,执行随后的语句
#ifndef 与#ifdef相反,判断某个宏是否未被定义
#elif 若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if
#else 与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else
#endif #if, #ifdef, #ifndef这些条件命令的结束标志.
defined  与#if, #elif配合使用,判断某个宏是否被定义

条件编译

条件编译是根据实际定义宏(某类条件)进行代码静态编译的手段。可根据表达式的值或某个特定宏是否被定义来确定编译条件。

最常见的条件编译是防止重复包含头文件的宏,形式跟下面代码类似:

1 #ifndef ABCD_H
2 #define ABCD_H
3
4 // ... some declaration codes
5
6 #endif // #ifndef ABCD_H

在实现文件中通常有如下类似的定义:

 1 #ifdef _DEBUG2 3 // ... do some operations4 5 #endif6 7 #ifdef _WIN328 9 // ... use  Win32 API
10
11 #endif

这些都是条件编译的常用情境。

C++条件编译:#ifdef相关推荐

  1. 条件编译#ifdef的妙用详解

    本文主要介绍c语言中条件编译相关的预编译指令,包括  #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define     ...

  2. 条件编译#ifdef 和#endif

    转于http://blog.csdn.net/fly_yr/article/details/39964035 C++中 #ifdef 和#endif的作用 一般情况下,源程序中所有的行都参加编译.但是 ...

  3. C语言中-条件编译#ifdef的妙用详解_透彻

    本文主要介绍c语言中条件编译相关的预编译指令,包括  #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define     ...

  4. C语言 (条件编译#ifdef、#ifndef) (#if 常量,#if 1,#if 0)的用法

    当屏蔽掉大块代码时,使用"#if 0"比使用"/**/"要好,因为用"/**/"做大段的注释要防止被注释掉的代码中有嵌套的"/** ...

  5. uni-app开发中的#ifdef MP是什么意思?条件编译

    跨端兼容https://uniapp.dcloud.io/platform uni-app 已将常用的组件.JS API 封装到框架中,开发者按照 uni-app 规范开发即可保证多平台兼容,大部分业 ...

  6. 预处理器预处理变量头文件保护条件编译

    [常见的预处理功能] #include 头文件保护符 条件编译 [预处理器] 编译之前执行的一段程序,可以部分地改变我们所写的程序 举个例子:当预处理器看到#include标记时就会用指定的头文件的内 ...

  7. c语言常用的条件编译,C语言条件编译

    使用与平台有关的C语言函数,可能会使得程序不具有可移植性.比如Socket编程.多线程编程等是与平台有关的. 若想将程序做成平台无关的就需要用到与平台相关的条件编译. 编译器 GCC #ifdef _ ...

  8. uniapp 条件编译的使用

    什么是条件编译 条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台. 一.写法:以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #en ...

  9. uniapp条件编译

    写法:以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾. #ifdef:if defined 仅在某平台存在 #ifndef:if not defined ...

  10. uni-app条件编译 解决各端差异

    跨端兼容 uni-app 已将常用的组件.JS API 封装到框架中,开发者按照 uni-app 规范开发即可保证多平台兼容,大部分业务均可直接满足. 但每个平台有自己的一些特性,因此会存在一些无法跨 ...

最新文章

  1. 2.JS执行上下文和变量对象
  2. vue文件快速生成模板代码
  3. Cannot evaluate tensor using 'eval' No default session is registered错误问题的解决
  4. T6 s1 day19
  5. C++调用Asprise OCR识别图片
  6. java.lang.OutOfMemoryError: GC overhead limit exceeded
  7. 让Vue也可以使用Redux
  8. 剑指 Offer II 061. 和最小的 k 个数对
  9. 编写属于自己的Python第三方库
  10. 芝诺数解|【三】前程未可量,奋发而为之——国产动画电影探索之路
  11. java计算时间差 (日时分秒)
  12. 不间断:即使被刺破,新的软电子设备也不会损坏
  13. Java job interview:项目架构研发京东大数据价值最大化的应用实践
  14. 编码器SRT协议三种模式(listener, caller, rendezvous)简介
  15. 2017.05.22 房多多 曾熙闭门会
  16. 有道云笔记markdown教程
  17. (二)提升树模型:Xgboost原理与实践
  18. 百度地图坐标查询(真实坐标)
  19. TSLint 配置规则
  20. c语言冯诺依曼原理,冯诺依曼型计算机的基本原理是什么

热门文章

  1. libstdc++.so, needed by ../../../rknn_api/arm64-v8a/librknn_api.so, not found
  2. numpy批量iou
  3. 基于视觉Transformer的目标检测
  4. Python中双冒号的作用[::]
  5. opencv 直线检测
  6. pyqt改变背景颜色
  7. pil拷贝,剪切,缩放
  8. 青龙羊毛——放羊娃(教程)
  9. 网球hcc http catcher使用方法以及规则分享
  10. PMP-【第15章 PMP考试的难点与易点】2021-2-17(304页-312页)【完】