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

记一个编写宏时的错误

错误背景:

当时是已经基本写好了日志系统,为了使日志系统更方便使用,所以还需要定义一系列宏。

出错的宏如下:

#define SYLAR_LOG_LEVEL(logger, level) \                                                         
          if (logger->getLevel() <= level) \                                                      
                  sylar::LogEventWrap(sylar::LogEvent::ptr(new LogEvent(logger, level, \   
                  __FILE__, __LINE__, 0, sylar::GetThreadId(), sylar::GetFiberId(), time(0)))).getSS()

make时报错信息如下:

在这里插入图片描述我就起了怪了,我的小括号都是成双成对的,怎么会出错???
在这里插入图片描述
上图中的这一段才是真正有用的信息。意思是:LogEvent前面需要类型说明,即,编译器不知道LogEvent是什么类型,所以可以想到这里缺少sylar::作用域。

解决办法:

出错原因其实是:宏里面少写一个sylar::的作用域。如下图所示:
在这里插入图片描述
修改之后代码可以正确运行。
但还是不晓得报错信息和这个错误原因有啥关系。(摊手)

反思:

从这个错误中,要注意以后编写宏的时候一定要注意+上作用域。同时以后再遇到这种报错信息,就要想一想是不是这个原因。

相关文章:

  • C++中全局变量,静态变量,静态局部变量 的初始化和内存分配问题
  • C++ 模板实现单例模式
  • 《C++ Primer》 异常
  • C++父类和子类指针的相互赋值和转换
  • 算法设计与分析————期末死亡冲刺
  • 现代软件工程————期末死亡冲刺
  • std::string::npos 常量解析
  • 练习4-3 求给定精度的简单交错序列部分和 (15 分)本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
  • 浙大版《C语言程序设计(第4版)》题目集 练习4-6 猜数字游戏 (15 分)
  • 练习4-7 求e的近似值 (15 分)自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。
  • 数组输入输出的方法
  • 习题:贴邮票
  • 习题:遍历搜寻
  • 习题:哥德巴赫猜想
  • 习题:数字拆分
  • 分享一款快速APP功能测试工具
  • 10个确保微服务与容器安全的最佳实践
  • ES2017异步函数现已正式可用
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Java的Interrupt与线程中断
  • MQ框架的比较
  • node学习系列之简单文件上传
  • 开源SQL-on-Hadoop系统一览
  • 新书推荐|Windows黑客编程技术详解
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 正则表达式小结
  • 2017年360最后一道编程题
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 阿里云移动端播放器高级功能介绍
  • 带你开发类似Pokemon Go的AR游戏
  • 交换综合实验一
  • ​HTTP与HTTPS:网络通信的安全卫士
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (14)Hive调优——合并小文件
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .cfg\.dat\.mak(持续补充)
  • .NET : 在VS2008中计算代码度量值
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .net解析传过来的xml_DOM4J解析XML文件
  • .pyc文件是什么?
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [<MySQL优化总结>]
  • [383] 赎金信 js
  • [android] 切换界面的通用处理
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)