c++ - 预处理器宏的 G++ 未使用标签警告
问题描述
我正在处理项目中的编译器警告,试图清理代码,而让我感到困惑的一个警告/错误是unused-label
对以下代码的警告。
STATE(initialize)
它说“初始化”标签已定义但未使用。STATE
是一个#define
宏,如下所示:
#define STATE(x) x: __TRACE__("enter", #x);
宏如下__TRACE__
:
#define __TRACE__(y,x) dbg.printf(DebugIO::debug2,"FSM:" y "(" x ")\n");
请注意,我没有编写此代码,只是在完成一个项目,试图尽可能多地纠正警告。但据我所知,initialize
标签被传递到__TRACE__
它用作printf()
调用参数的地方。
那么,为什么不使用它呢?编译器是否不查看预处理器指令以使用变量?
我将如何纠正这一点?
解决方案
警告的真正原因是
x: TRACE...
介绍要与 一起使用的标签goto
。有理由认为没有goto
初始化状态(看起来我们正在查看 FSM 实现)。
如果不重新设计框架,可能无法删除此警告(例如,添加一个特殊的状态宏,它不会为您从未进入的状态定义标签),但也可以只为项目消除此特定警告.
推荐阅读
- javascript - 如何检测脚本是否在模块中运行?
- git - 将新提交的更改应用到旧提交,而无需中间提交
- python - 派格莱特。如何动态更改顶点的图片(动画)。OpenGL
- ios - Swift:TableView(单元格内)未加载单元格或 cellForRowAt 内的代码
- python - Python - 使用格式/f字符串输出带有0填充和中心的十六进制
- r - 在 R 中设置缺少的日期时间
- sql - 在 SQL 中的以下段上完成交叉表的正确方法是什么?
- scala - 如何检查一个值是否是 Scala 中的 unix 时间戳?
- c# - Azure 上的文件保存路径
- r - 通过对方程求微分来计算 OLS 估计量