C++学习笔记(三十三):c++ 宏定义

本节对c++的宏定义进行描述。c++使用预处理器来对宏进行操作,我们可以写一些宏来替换代码中的问题,c++的宏是以#开头,预处理器会将所有的宏先进行处理,之后在通过编译器进行编译。宏简单说就是文本替换,可以替换代码中的任何东西,因此过度使用宏会降低代码的可读性。

  • #define替换代码中任意文本
  • #include <iostream>
    #define WAIT std::cin.get();int main()
    {//使用WAIT替换std::cin.get();这行语句,但不建议这样写,降低代码的可读性,只是举例用WAIT
    }
  • #define可以传入参数
  • #include <iostream>
    #define LOG(x) std::cout << x << std::endl;int main()
    {LOG("Hello World!")std::cin.get();
    }
  • 宏可以进行条件判断。使用宏可以很好的控制日志的打印,例如DEBUG模式下打印的日志信息需要详细一点,而RELEASE模式下则有些日志不需要打印。在Debug模式下添加预处理器_DEBUG,在release模式下添加NDEBUG
  • #include <iostream>//只在DEBUG模式下打印log,release模式下不打印
    #ifdef _DEBUG
    #define LOG(x) std::cout << x << std::endl;
    #else
    #define LOG(x)
    #endifint main()
    {LOG("Hello World!")std::cin.get();
    }
  • 可以给宏定义复制
  • #include <iostream>//只在DEBUG模式下打印log,release模式下不打印
    #if _DEBUG == 1
    #define LOG(x) std::cout << x << std::endl;
    #elif defined(NDEBUG)
    #define LOG(x)
    #endifint main()
    {LOG("Hello World!")std::cin.get();
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/615207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

swarm节点间通信问题-关闭checksum校验和

现场还原 客户有n台redhat虚拟机&#xff0c;构建了一个swarm集群&#xff0c;服务起来后&#xff0c;发现不同节点间的服务&#xff0c;无法互相访问。经运维大佬排查是服务器的checksum校验是开启状态&#xff0c;关闭即可~ 查看checksum状态 ethtool -k 内网网卡名称 | g…

Rhinoceros 8(犀牛8)中文授权版支持Win/Mac

Rhinoceros 8&#xff0c;也称为犀牛8&#xff0c;是一款专业的三维建模软件&#xff0c;深受设计师们的喜爱。这款软件为设计师提供了无限的创意空间和强大的工具&#xff0c;无论他们是产品设计师、建筑师还是工业设计师。 Rhinoceros 8采用了先进的NURBS建模技术&#xff0c…

Kafka外网访问

文章目录 一、背景二、需求三、调研四、配置内外网访问 一、背景 kafka机器只有内网IP&#xff0c;没有绑定外网网卡&#xff0c;但是可以在防火墙或通过其他有公网IP的设备上进行公网IP端口的映射。 二、需求 kafka集群端口映射后&#xff0c;可以通过外网IP端口进行数据生…

基于JavaWeb+BS架构+SpringBoot+Vue+Hadoop短视频流量数据分析与可视化系统的设计和实现

基于JavaWebBS架构SpringBootVueHadoop短视频流量数据分析与可视化系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 目  录 目  录 I 1绪 论 1 1.1开发背景 1 1.2开…

k8s集群配置NodeLocal DNSCache

一、简介 当集群规模较大时&#xff0c;运行的服务非常多&#xff0c;服务之间的频繁进行大量域名解析&#xff0c;CoreDNS将会承受更大的压力&#xff0c;可能会导致如下影响&#xff1a; 延迟增加&#xff1a;有限的coredns服务在解析大量的域名时&#xff0c;会导致解析结果…

Python 语言基础

目录 Python 语言基础语法特点注释缩进规范编写规则命名规范 变量保留字与标识符Python中的变量定义变量 基本数据类型数字字符串Bool类型数据类型转换 输入和输出input&#xff08;&#xff09;输入print 输出 Python 语言基础 语法特点 注释 单行注释&#xff0c;语法如下…

transbigdata笔记:数据栅格化

1 area_to_grid 在边界或形状中生成矩形栅格 1.1 主要使用方法 transbigdata.area_to_grid(location, accuracy500, methodrect, paramsauto) 1.2 主要参数 location (bounds(List) or shape(GeoDataFrame) 生成栅格的位置。 如果边界为 [lon1&#xff0c; lat1&#xff0…

Syslog发送日志+Logstash处理日志

Syslog发送日志 Syslog&#xff08;System Logging Protocol&#xff09;是一种用于计算机系统日志记录的标准协议。它允许设备&#xff08;如服务器、路由器、防火墙等&#xff09;将事件消息发送到指定的日志收集服务器&#xff0c;以便集中管理和分析。通过使用Syslog&…

【MySQL】MySQL基本语句

1.使用 MySQL 客户端登录&#xff1a; 打开终端并运行以下命令&#xff0c;使用你的 MySQL 用户名和密码登录到 MySQL 服务器&#xff1a; mysql -u your_username -p2.连接成功后&#xff0c;运行以下 SQL 查询语句来获取数据库的数量&#xff1a; SHOW DATABASES;3.选择数据…

从传统训练到预训练和微调的训练策略

目录 前言1 使用基础模型训练手段的传统训练策略1.1 随机初始化为模型提供初始点1.2 目标函数设定是优化性能的关键 2 BERT微调策略: 适应具体任务的精妙调整2.1 利用不同的representation和分类器进行微调2.2 通过fine-tuning适应具体任务 3 T5预训练策略: 统一任务形式以提高…

[BJDCTF2020]ZJCTF,不过如此

题目源码&#xff1a; <?phperror_reporting(0); $text $_GET["text"]; $file $_GET["file"]; if(isset($text)&&(file_get_contents($text,r)"I have a dream")){echo "<br><h1>".file_get_contents($tex…

Echarts 引入地图

# 地图数据获取 获取地址&#xff1a;DataV.GeoAtlas地理小工具系列 # 地图渲染 // 地图 mapOption: { title: {text: 作物省市分布图,left: left,subtext: provincial and cities distribution of crops }, // 浮窗样式 tooltip: {show: true, // 提示浮窗是否显示trigger:…

C++学习笔记(二十一)

一、set/multiset容器 1. set基本概念 简介&#xff1a;所有元素都会在插入时自动被排序 本质&#xff1a;set/multiset属于关联式容器&#xff0c;底层结构是用二叉树实现的 set和multiset的区别&#xff1a;set不允许容器中有重复的元素&#xff0c;multiset允许容器中有…

数学建模 | 一文读懂:支持向量机(matlab源码)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 支持向量机 1 支持向量分类机的基本原理1.1 线性可分支持向量分类机1.2…

数据分析基础之《pandas(1)—pandas介绍》

一、pandas介绍 1、2008年Wes McKinney&#xff08;韦斯麦金尼&#xff09;开发出的库 2、专门用于数据分析的开源python库 3、以numpy为基础&#xff0c;借力numpy模块在计算方面性能高的优势 4、基于matplotlib能够简便的画图 5、独特的数据结构 6、也是三个单词组合而…

使用numpy处理图片——图片拼接

大纲 左右拼接上下拼接 在《使用numpy处理图片——图片切割》一文中&#xff0c;我们介绍了如何使用numpy将一张图片切割成4部分。本文我们将反其道而行之&#xff0c;将4张图片拼接成1张图片。 基本的思路就是先用两张图以左右结构拼接成上部&#xff0c;另外两张图也以左右拼…

2024年Ubuntu18.04执行do-release-upgrade报错的解决方案

2024年Ubuntu18.04执行do-release-upgrade报错的解决方案 背景报错情况解决方法先升级可用的软件包执行 do-release-upgrade方法一&#xff1a;直接执行 github 上写好的脚本方法二&#xff1a;手动执行 还原配置 背景 公司用的信服云&#xff0c;公共镜像中最新的Ubuntu镜像是…

ansible从入门到精通(完整篇)

文章目录 01 Ansible介绍与安装1. 介绍 Ansible1.1 什么是 Ansible?1.2 Ansible 无需代理1.3 Ansible 方式 2. 安装 Ansible2.1 控制节点2.2 受管主机2.3 基于Windows的受管主机2.4 受管网络设备2.5 安装Ansible 02 部署Ansible1. 构建Ansible清单1.1 定义清单1.2 使用静态清单…

Ubuntu20.04下A-LOAM配置安装及测试教程(包含报错问题踩坑)

参考文章&#xff1a; ubuntu20.04下ros运行A-LOAM Ubuntu20.04下运行LOAM系列&#xff1a;A-LOAM、LeGO-LOAM、SC-LeGO-LOAM、LIO-SAM 和 LVI-SAM 需要学习源码的同学可以下载LOAM论文 LOAM论文链接 1.需要安装的库文件 1.1Eigen 3.3 可以直接使用apt命令安装&#xff0c;或…

芯课堂 | 如何配置SWM系列系统时钟?

如何配置SWM系列 系统时钟&#xff1f; 华芯微特科技有限公司SWM系列芯片可通过软件配置改变时钟的速度&#xff0c;可以让我们的设计更加灵活,频率可选空间也更加广泛&#xff0c;用户可以根据自己的实际需求配置需要的系统时钟。为了让用户能够更简单的使用这一功能&#xf…