c++ - 在 C++ 中显示“匿名”变量创建警告
问题描述
我有这样的课:
class ScopedLock {
public:
ScopedLock (Locker *lock) { /*...*/ }
~ScopedLock () { /*...*/ }
};
通常它被称为(这将在正确的位置调用 ScopedLock 的构造函数/析构函数):
{
ScopedLock l(&locker);
// ...
}
我不小心这样称呼它:
{
ScopedLock(&locker);
// ...
}
这样的“东西”叫什么名字?未使用的匿名局部变量?
有没有可能阻止这种情况?是否有可用于此类“事物”的编译器警告?
解决方案
您创建了一个未命名的临时/无名临时对象,ScopedLock
该对象短暂存在,然后在;
. 编译器不会发出警告,因为它假定您正在使用它做一些有用的事情。它不会进入 ctor 主体来检查是否是这种情况。例如,你想创建一个临时的,你的构造函数可能会做一些工作:
ScopedLock() {
// do some work
}
您不能强制编译器针对此类用例显示警告,并且 GCC 中没有此类标志。
以下 SO 帖子可以证明是有益的:
推荐阅读
- python - 名称“__current_graph”未定义
- apache-kafka - Apache Flink:处理来自 Kafka 的 confluent-avro 中的不良 avro 记录
- python - 当我们添加诗歌时,诗歌是否安装了软件包?
- ios - iOS 列表式按钮是否有特定名称?
- python - OptaPy 可以在 GraalVM 上运行吗?
- notion-api - Notion API 不再返回文件 URL
- python - WxPython 剪切、复制、粘贴功能
- c++ - Is it safe to mix UNICODE and non-UNICODE translation units?
- python - phonenumbers - 检查任何国家/地区的电话号码有效性
- outlook - 如何以编程方式获取 Outlook 联系人的成员资格(分发组)?