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

论C/C++的条件编译#if、#ifdef、#ifndef、#undef

我们以实例来演示:
------------------------------------------实验①------------------------------------------
子函数:
在这里插入图片描述
主函数:
在这里插入图片描述
当定义了COMMENT_FLAG该宏,且其为0,则运行结果如下:只执行了sub_func_1函数。
在这里插入图片描述

------------------------------------------实验②------------------------------------------
子函数:
在这里插入图片描述
主函数:
在这里插入图片描述
当定义了COMMENT_FLAG该宏,且其为1,则运行结果如下:执行了sub_func_0、sub_func_1函数。
在这里插入图片描述
实验结论:
对于#if,宏COMMENT_FLAG被定义为1,则其条件编译有效;宏COMMENT_FLAG被定义为0,则其条件编译无效。其效果类似于 if 行为。
对于#ifdef,只要定义了宏COMMENT_FLAG,无论其是被定义为1或0,都可执行其条件编译内容。
至于#ifndef的作用,与#ifdef是相反的,宏COMMENT_FLAG只要没有被定义,则执行#ifndef的条件编译。

还有一个#undef,可以在定义COMMENT_FLAG该宏后,取消其定义。简单做个实验:
在这里插入图片描述

在第48行,使用了 #undef COMMENT_FLAG,无任何运行结果,即sub_func_0、sub_func_1函数都没有被执行。

在这里插入图片描述

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

相关文章:

  • Promise入门
  • 三级知识点汇总(详解)【c++】——2
  • 我用Cursor,1周上线了一个虚拟资料流量主小程序技术选型
  • Linux“一切皆文件“设计哲学 与 Linux文件抽象层:struct file与file_operations的架构解析
  • 【ChatOpenAI】常用方法详解
  • HOT100——动态规划篇Leetcode221. 最大正方形
  • C++ std::thread线程类 相关问题、函数总结
  • 单调队列深度解析(下)
  • 如何解决 ‘NoneType‘ object has no attribute ‘get‘问题
  • GA-BP遗传算法优化BP神经网络数据生成,采用SVM分类模型评估
  • LM317 芯片推荐电路中保护二极管工作原理
  • 教育科技内容平台的用户定位与产品方案:从需求到解决方案的精准匹配
  • prometheus UI 和node_exporter节点图形化Grafana
  • GaussDB 数据库架构师修炼(六) 集群工具管理-1
  • 农经权二轮延包—批量出图片
  • 了解.NET Core状态管理:优化技巧与常见问题解决方案
  • 第4章 数据的排序、筛选和分类汇总
  • 金融系统AIGC能力中心赋能实战指南
  • 告别 T+1!解密金融级实时数据平台的构建与实践
  • RK3568 Linux驱动学习——SDK安装编译
  • 浅谈Rust语言特性
  • [C/C++安全编程]_[中级]_[如何避免出现野指针]
  • MySQL 写入性能优化全攻略(附 GitHub 面试题项目链接)
  • 相机参数的格式与作用
  • 大语言模型置信度增强实战指南
  • 第 3 篇:《WHERE 就是刷选项——像点外卖一样精确筛房!》
  • 【硬件】嵌入式问题
  • FPGA相关通信问题详解
  • XSS漏洞总结
  • 商业秘密视域下计算机软件的多重保护困境