c++基础(宏)
来源:zidea     阅读:570
源码超市
发布于 2019-06-11 03:39
查看主页
Cplusplus-tutorial-in-hindi.jpg

有关 c++ 中宏的定义以及使用是今天的重点内容。

C++ 的宏定义将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替。

其实宏就是在源码在编译前一个预解决指令,将代码中指定宏命令找到并以文本的形式进行替换而已。

宏命令可以减少开发者的工作,但是个人并不推荐过渡地使用宏,这样降低了代码的可读性。

#include <iostream>#include <string>#define WAIT std::cin.get()int main(int argc, char const *argv[]){    WAIT;}

是通过#define定义宏的,这里WAIT等同于std::cin.get(),在预解决阶段会将WAIT替换为std::cin.get()后再进行编译。
大家可能注意到后门面的;````。由于定义WAIT的代码段包含;。所以我们需要在WAIT```后面补充上;。这表明这是一种纯文本的替换。

#define WAIT std::cin.get();int main(int argc, char const *argv[]){    WAIT}

下面例子中我们用OPEN_CURY表示{

#include <iostream>#include <string>#define OPEN_CURY {int main(int argc, char const *argv[])    OPEN_CURY    std::cin.get();}

以上的例子并不会出现在实际开发中,也没有什么具体意义仅是为了说明宏的使用方法,以及宏是如何工作的而已。

#define LOG(x) std::cout << x << std::endlint main(int argc, char const *argv[]){    LOG("hello");    std::cin.get();}

通过我们会控制输出作为一个宏来使用,这样可以简化我们少量控制输出代码。

#include <iostream>#include <string>#define MAIN            \    int main()          \    {                   \        std::cin.get(); \    }MAIN

我们通常在开发调试阶段需要输出少量信息供监控程序运行状况,而在实际发布到生成环境时候处于少量安全问题我们可能需要去掉这些输出,这个时候我们就会用到宏进行实现

#include <iostream>#include <string>#ifdef PR_DEBUG#define LOG(x) std::cout << x << std::endl#else#define LOG(x)#endifint main(int argc, char const *argv[]){    LOG("hello");    std::cin.get();}
g++ macro1.cpp -D PR_DEBUG -o marco1

我们可以通过-D PR_DEBUG定义宏

#if PR_DEBUG == 1#define LOG(x) std::cout << x << std::endl#else#define LOG(x)#endif

可以通过给自己设置宏PR_DEBUG传递参数来控制流程。

 g++ macro1.cpp -D PR_DEBUG=1 -o marco1
免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
数据科学 IPython 笔记本 8.17 使用 Seaborn 的可视化
前台面试每日 3+1 —— 第325天
CentOS 7.x更换内核
CSS常见样式和属性
HTTPS最佳实践之HTTPS检测工具SSLLabs与MySSL比照
首页
搜索
订单
购物车
我的