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

宏auto关键字(C++基础)

宏可以实现对语句的同义替换,简单来说就是预处理阶段、编译前的替换(包括符号,变量等)。

#define LOG(x) std::cout << x << std::endl; 
LOG("hello")

可以正常使用。

下面通过上图中借用不同开发模型设置的预处理器定义可以完成对代码的自动化,就比如可以完成在调试情况下输出控制台信息,而在开发环境下不输出。

#ifdef LHX_DEBUG
#define LOG(x) std::cout << x << std::endl; 
#else LHX_RELEASE
#define LOG(x)
#endif

这样使用ifdef可能有点问题(我也不知道什么问题,视频说的),所以换成下面的形式:

#if LHX_DEBUG
#define LOG(x) std::cout << x << std::endl; 
#elif LHX_RELEASE
#define LOG(x)
#endif

使用if 0语句会让被包裹的语句失效:

宏对调试很有帮助?不太懂很有帮助体现在哪里。

auto关键字

使用auto关键字放在声明类型的位置,可以不用指定特定类型,编译器自动来进行调整。

好处:很方便,在某些情况下简化开发。

坏处:滥用会导致代码可读性差,并且出错后难以调整。

如果是临时使用的变量,并且比较复杂,使用auto较为方便,如果需要大段代码使用,最好还是指明类型,增强代码的可读性,下图代码中需要保持一个良好的习惯,在类型位置和大括号前,经常性的加上const,程序可以顺利运行,但其实没有必要,因为类型也并不复杂。

const char* GetName(){
	return "lhx";
}//需要加上const	
    auto a = GetName();
    auto b = a;
	LOG(b)

一般用于如下场景:

class DeviceManager {
private:
	std::unordered_map<std::string,std::vector<Device*>> m_Devices;
public:
	const std::unordered_map<std::string, std::vector<Device*>>& getDevice() const {
		return m_Devices;
	}
};
int main(){
	using DeviceMap = std::unordered_map<std::string, std::vector<Device*>>;
	typedef std::unordered_map<std::string, std::vector<Device*>> DeviceMap;
	DeviceManager dm;
	const auto& devices = dm.getDevice();
	auto devices = dm.getDevice();
}

在不想使用using和typedef的情况下,来短暂的使用auto关键字·,或者在迭代器中短暂的使用,发现非常的方便,记得带上&和const来避免复制!!

最后要注意在方法中返回&的话记得加上const,这个是要多处对应的,涉及到的时候一定要多处检查。

相关文章:

  • GPT-4技术解析:与Claude3、Gemini、Sora的技术差异与优势对比
  • linux循环之until循环
  • 2023年度总结报告
  • 【并查集】一种简单而强大高效的数据结构
  • Spring Boot 生成与解析Jwt
  • Qt区分左右Shift按键
  • Python爬虫——Urllib库-3
  • 基于chatgpt的聊天机器人
  • 如何保证 HTTPS 证书的有效性?
  • SpringCloud2023最新版本该如何进行组件选型?
  • 飞桨(PaddlePaddle)Tensor使用教程
  • TensorFlow
  • 总结虚拟机的安装步骤:
  • Swift SwiftUI 学习笔记 2024
  • 【AI绘画】免费GPU Tesla A100 32G算力部署Stable Diffusion
  • 认识事物的几个阶段 GPU学习
  • HarmonyOS—配置编译构建信息
  • 利用Python爬取高德地图全国地铁站点信息
  • 【嵌入式——QT】QTableWidget
  • canvas签名页面跟着滑动bug
  • 国办印发《关于进一步加强困境儿童福利保障工作的意见》
  • AI药企英矽智能第三次递表港交所:去年亏损超1700万美元,收入多数来自对外授权
  • 从上海首个到成片复制,闵行零工市场如何优化劳动就业服务?
  • 圆桌丨中俄权威专家详解:两国携手维护战后国际秩序,捍卫国际公平正义
  • 波音公司计划于2027年交付新版“空军一号”飞机
  • 牛市早报|央行宣布降准降息,公募基金改革最新方案落地