对对联的网站,做网站的调研报告,做网站的人搞鬼少首页文件,网站系统报价方案模板下载宏
宏可以实现对语句的同义替换#xff0c;简单来说就是预处理阶段、编译前的替换#xff08;包括符号#xff0c;变量等#xff09;。
#define LOG(x) std::cout x std::endl;
LOG(hello)
可以正常使用。 下面通过上图中借用不同开发模…宏
宏可以实现对语句的同义替换简单来说就是预处理阶段、编译前的替换包括符号变量等。
#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_mapstd::string,std::vectorDevice* m_Devices;
public:const std::unordered_mapstd::string, std::vectorDevice* getDevice() const {return m_Devices;}
};
int main(){using DeviceMap std::unordered_mapstd::string, std::vectorDevice*;typedef std::unordered_mapstd::string, std::vectorDevice* DeviceMap;DeviceManager dm;const auto devices dm.getDevice();auto devices dm.getDevice();
}
在不想使用using和typedef的情况下来短暂的使用auto关键字·或者在迭代器中短暂的使用发现非常的方便记得带上和const来避免复制
最后要注意在方法中返回的话记得加上const这个是要多处对应的涉及到的时候一定要多处检查。