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

杭州市建设信用网网站淘客推广佣金和服务费

杭州市建设信用网网站,淘客推广佣金和服务费,网站的icp是什么意思,淘宝现在网站建设不能发布要发布上面类目这篇文章我们讲一下C当中的宏。其实接触过大型项目的朋友可能都被诡异的宏折磨过。 宏是在预处理当中,通过文本替换的方式来实现一些操作,这样可以不用反复的输入代码,帮助我们实现自动化。至于预处理的过程,其实就是文本编辑&am…

这篇文章我们讲一下C++当中的宏。其实接触过大型项目的朋友可能都被诡异的宏折磨过。

宏是在预处理当中,通过文本替换的方式来实现一些操作,这样可以不用反复的输入代码,帮助我们实现自动化。至于预处理的过程,其实就是文本编辑,这个在之前的文章中有提到过。

替换的具体内容,可能是普通文本,也可以是参数变量等各种东西,可以说,就没有什么是不能够被宏替换掉的,我们可以拿来替换非常复杂的内容。但是需要注意的是,我们不希望拿宏来替换太多与C++特性有关的代码,这样并不是一个好的做法,因为会降低代码的可读性,虽然这样做是没有任何问题的。

举个例子,我们用宏替换到我们常用的cin.get()语句:

#include<iostream>
#include<string>
#define WAIT std::cin.get()int main() {std::cout << "Hello World!" << std::endl;WAIT;
}

这样写当然是可以的,是能够编译通过的,但是这种写法是很傻的。因为cin.get()是非常常用的语句,但是使用一个WAIT来替换它,反而会降低代码的可读性,让其他人看得一头雾水。

当然,分号也可以是宏的一部分,如果想的话也可以把分号写在宏里面,那么就不用在代码里面再写分号了。

接下来我们看看如何在宏当中定义函数。

#include<iostream>
#include<string>
#define LOG(x) std::cout<< x << std::endl;int main() {LOG("Hello World!")std::cin.get();
}

我们运行代码就会发现,我们正常的完成了打印,所以和实际写cout效果是一样的。

那么我们可以如何用宏帮助我们?一个有趣的实例就是在我们的日志类当中,我们希望在debug状态下打印出我们需要的信息,但是在release版本当中不希望那么多东西都被打印到控制台上,那么如何能够区分debug还是release?在不同模式下函数应该是什么样子的?这些我们就都可以用到宏来进行控制。

首先我们需要打开属性,然后找到预处理界面,然后分别为debug和release两个配置添加不同的宏,如图所示:

我们在debug和release模式下分别定义PR_DEBUG和PR_RELEASE两个宏,这样我们就有了区分debug和release两个模式的工具。然后我们就可以通过宏来控制我们是否需要打印:

#ifdef PR_DEBUG
#define LOG(x) //这里填写我们需要的函数定义
#else
#define LOG(x)
#endif

如上述代码所示,我们可以在debug模式下让LOG函数真的为我们输出一些东西,但是在release模式下,LOG就不代表任何代码了,也就是说切换到release时,LOG处都会变成空白,宏自动的为我们删除了在release时需要被删除的代码,这一点是非常nice的。

但是这样使用也是有一点问题的,因为有的时候我们不想使用某个宏了,那我们还得去删除,就很麻烦,最好的情况是给宏赋一个值,然后我们不想使用宏的时候,可以直接修改这个宏的值,那么这个宏就被禁用了。首先我们在设置当中为我们的宏赋值:

如图所示,我们把PR_DEBUG赋值为1,然后我们在代码当中可以直接这样写:

#if PR_DEBUG == 1

来判断是不是在debug模式下。如果我们想要禁用这个宏,只需要

#define PR_DEBUG 0

就可以禁用这个宏了。

除此之外,我们还可以用宏来禁用一整块代码,如下所示:

#if 0LOG("Hello World!")
#endif

这样中间部分代码就都无效了。

如果我们想要代替多行代码,可以用反斜线 \ 来替代,反斜线就是分行的转义。

宏最常用的地方就是用来帮助我们debug,还可以自动查错,也可以帮助跟踪内存的使用情况。但是如果滥用宏,确实会导致代码可读性大幅降低,所以我们还是要慎重使用宏。以上就是本文的全部内容了,希望大家喜欢!


文章转载自:

http://z5q2lIdC.qcjqd.cn
http://a4NSUXFo.qcjqd.cn
http://Nr4185jB.qcjqd.cn
http://7EQQapeb.qcjqd.cn
http://4Iz5qmxe.qcjqd.cn
http://HP4etr7h.qcjqd.cn
http://w94CNBYV.qcjqd.cn
http://kcakq8zM.qcjqd.cn
http://9CRzWa7G.qcjqd.cn
http://zcVyklnx.qcjqd.cn
http://ikPPJxMJ.qcjqd.cn
http://C5YIgYtY.qcjqd.cn
http://yxYMcAnC.qcjqd.cn
http://SX2Xvl2J.qcjqd.cn
http://hCT7dNAC.qcjqd.cn
http://bXWMJZ5M.qcjqd.cn
http://k2t0LEyF.qcjqd.cn
http://V6OtLYTH.qcjqd.cn
http://bKtMsprX.qcjqd.cn
http://J6QOtLgM.qcjqd.cn
http://8w7iy3pq.qcjqd.cn
http://oqE4InkQ.qcjqd.cn
http://C2Thj4iQ.qcjqd.cn
http://xKZUfTyV.qcjqd.cn
http://eL2qrR9u.qcjqd.cn
http://3ESuOBdt.qcjqd.cn
http://yYYzt61g.qcjqd.cn
http://b0WLQAWd.qcjqd.cn
http://y5uPSZT7.qcjqd.cn
http://R0aJ5yby.qcjqd.cn
http://www.dtcms.com/wzjs/718862.html

相关文章:

  • 广州专业网站改版方案网站设计机构排名
  • 网站规划的基本内容有哪些阳江网页设计
  • 官方网站建设公司排名郑州电力高等专科学校就业去向
  • 网站用户细分html制作百度登录页面
  • 中国工程建设信息网站网站权重收录
  • 主要搜索引擎网站搜索结果比较红孩子母婴网站开发背景
  • 工信部网站首页pc做网站服务器吗
  • 网站的经典推广方法衡水建设企业网站
  • 网站seo快速排名云南省建设工程造价信息网官网
  • 网站做导航的地图导航发布信息的软件
  • 平面设计师素材网站响应式网站制作价格
  • 怎么找做网站的公司医疗网站建设效果
  • 网站 开发流程收录网
  • 哈尔滨网站建设招聘软件盒子wordpress
  • 做导购类网站制作一个网站的费用是多少
  • 成都建立网站的公司网站网站开发工具的功能
  • 做企业平台的网站有哪些烟台专业的网站建站公司
  • 专业企业建站价格jsp做的网站可以用的
  • 清新大气企业公司网站源码新乡seo公司
  • 网站价格表wordpress 主题和搭建
  • 服饰怎么做网站推广网页设计基础实训目的
  • 黄冈手机网站建设百度指数第一
  • .湖南省建设厅规范网站个人全屏网站模板
  • 福州小学网站建设数字化营销方案
  • 社区微网站建设方案广东建设协会网站首页
  • 什么网站做的最好虚拟货币网站建设
  • 镇江有哪些网站加盟网站开发费用
  • 盘锦做网站多少钱网上买保险有哪些平台
  • 医院网站建设的好处百度下载免费官方安装
  • 手表 网站策划哪个网站可以找人做橱柜