当前位置: 首页 > news >正文

【一天一个计算机知识】—— 【编程百度】条件编译

在这里插入图片描述

在这里插入图片描述

🔥🔥一天一个计算机知识🔥🔥
🌊🌊编程百度🌊🌊
🌠🌠如何获取自己的代码仓库🌠🌠

文章目录

  • 📥 什么是条件编译?
  • 🛠️ 核心指令详解
    • 1. `#if`, `#elif`, `#else`, `#endif`
    • 2. `#ifdef` 和 `#ifndef`
    • 3. `defined()` 操作符
  • 📋 综合实例演示
    • 示例 1:头文件保护 (`Header Guard`)
    • 示例 2:跨平台代码
    • 示例 3:临时注释代码 (Debug)

📥 什么是条件编译?

条件编译是C语言(以及C++等)预处理阶段的一项核心功能
它允许您在代码实际被编译之前,根据一组预定义的条件,告诉预处理器“包含”或“排除”哪些代码块

简单来说,它就像是给编译器看的 if-else 语句。

  • 运行时 if:程序运行时,根据变量的值决定执行哪条路径。

  • 编译时 #if:程序编译时,根据预设的宏或常量决定哪段代码被编译进最终的可执行文件中。

如果条件为假,那部分代码块根本不会被编译,就好像您手动删除了它们一样

🛠️ 核心指令详解

条件编译主要由以下几组预处理器指令控制:

1. #if, #elif, #else, #endif

这是最灵活的条件编译指令,它会计算一个常量表达式的值

  • #if :如果 expression (表达式) 为真(非零),则编译后续代码

  • #elif#elif 如果前面的 #if#elif 不为真,则检查这个 expression

  • #else:如果以上所有条件都不为真,则编译这部分代码。

  • #endif:标记条件编译块的结束。

注意: 表达式必须是预处理器在编译时就能计算出来的常量,不能是变量

在这里插入图片描述

2. #ifdef#ifndef

这两个指令只检查一个宏(Macro)是否被定义过,而不关心它的具体值。

  • #ifdef <MACRO_NAME>:(if defined) 如果 MACRO_NAME 已被定义,则编译后续代码。

  • #ifndef <MACRO_NAME>:(if not defined) 如果 MACRO_NAME 未被定义,则编译后续代码。

它们通常与 #else#endif 配合使用。

在这里插入图片描述

3. defined() 操作符

defined() 是一个特殊的预处理器操作符,它必须在 #if#elif 中使用。它提供了比 #ifdef 更强大的灵活性,因为它允许您在单个表达式中组合多个检查。

defined(MACRO_NAME):如果 MACRO_NAME 被定义,则返回 1 (真);否则返回 0 (假)。

在这里插入图片描述



📋 综合实例演示

示例 1:头文件保护 (Header Guard)

这是 string.h(一个假设的自定义头文件)为了防止被重复包含:

在这里插入图片描述

  • 第一次包含:_MY_STRING_H_ 未定义,#ifndef 为真。代码执行,_MY_STRING_H_ 被定义,头文件内容被包含。

  • 第二次包含:_MY_STRING_H_ 已被定义,#ifndef 为假。从 #ifndef#endif 之间的所有代码被跳过。


示例 2:跨平台代码

在这里插入图片描述


示例 3:临时注释代码 (Debug)

在这里插入图片描述



http://www.dtcms.com/a/601902.html

相关文章:

  • 网站分享注册公司代理电话
  • 免费制作一个企业网站广告设计公司网页
  • Gradle vs Maven 详细对比
  • [Column#187] 10data_struct | IP速查表 | 协议TCPUDP | DeepSeek-OCR
  • 生产级HMACSHA256签名与验签案例
  • 腾讯云服务器搭建网站漯河网站建设费用
  • docker部署开源监控软件hertzbeat
  • 上海网站网站建设工程公司简介范文大全
  • STM32CubeMx学习hal库
  • 在线确定性算法与自适应启发式在虚拟机动态整合中的竞争分析与性能优化
  • 企业网站建设费多少钱硬盘做免费嗳暧视频网站
  • 做图在哪个网站上找南京自助建站模板
  • 山东市网站建设中国林业网站群建设工程
  • 大白话浅析Windows 安全核心机制
  • 【OpenCV + VS】OpenCV 随机数绘图:如何在图像中绘制随机线条
  • 个人网站可以做商城吗泰安人才信息网官网
  • 网站开发提供图片加载速度建设工程施工合同示范文本2021
  • sward实战教程系列(2) - 创建第一个知识库
  • iOS 内存管理之 autoreleasePool
  • 北京沙河教做网站的山东省济南市莱芜区
  • 长沙建长沙建网站公司给wordpress程序提速
  • 多国语言编译库 | 适用于全球化开发的高效工具
  • C语言编译系统 | 如何高效构建和使用C语言编译系统
  • 手机建设银行网站首页网站开发app开发主营业务
  • 11月12日星期三今日早报简报微语报早读
  • 360水滴摄像头重新设置摄像头wifi
  • Notepad++ 编译 C 语言的使用方法与技巧
  • 编译C语言的软件 | 轻松高效的C语言编译工具介绍
  • 企业网站设计特点建设银行网站怎么打印明细
  • C语言练习题——判断水仙花数(0-100000)