c++基础(宏)

作者 : 开心源码 本文共1383个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共187人阅读

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();}
  • 假如存在PR_DEBUG就将LOG(x) 定义为 std::cout << x << std::endl进行输出。否则定义为空不进行任何输出。
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

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » c++基础(宏)

发表回复