如何使用C++编译器/链接器/技巧来检测已分配但以后从未引用的值
How to use the C++ compiler/linker/trick to detect a value that is assigned but never subsequently referred to?
我想创建一个singleton类,称其为global_references
,其中包含一堆缓存的全局值。singleton类代码将从一组表中自动生成。一般方案是这样的:
global_references.h
struct global_references
{
some_type value1;
some_type value2;
some_type value3;
...
static const global_references& instance();
};
假设global_references::instance()
初始化各种valueN变量并返回singleton实例。然后,各种客户端将在自己的代码中使用缓存的值:
some_translation_unit.cpp
...
x = global_references::instance().value1;
我担心的是,我会将项目添加到用于生成自动生成的global_references
类的表中,但随着时间的推移,它们生成的一些符号将变得过时,并停止在程序中使用。我想知道什么时候会发生这种情况,最好让编译器或链接器抱怨一个未使用的符号,或者一个已分配但从未使用过的值。这将提醒我从表中删除相应的项目。我也对任何其他合理简单的解决方案持开放态度。
我在Windows上使用MinGW[g++4.6.2]。
已考虑的选项
我曾想过让成员函数返回值,但-Wunused-function
编译器选项仅适用于静态函数,而我需要global_references
是一个模块化组件,可以包含在任何翻译单元中。
使用-Wunused但设置变量,或者为了获得更广泛的效果,使用-Wunised或-Wall。
我不确定我是否理解你的目的。因此,每次向表中添加项后,您将重新编译项目代码,以查找编译警告未使用的内容。这听起来是一种效率低下的方式。
相关文章:
- 对具有动态分配的内存和析构函数的类对象的引用
- 拥有映射的现代方法,该映射可以指向或引用已在堆栈上分配的不同类型的数据
- 我如何通过引用将 c++ 字符串分配给另一个字符串
- 将引用分配给局部变量,如果局部变量超出范围,它会超出范围吗?
- 如何在构造函数中构造对象并分配引用
- C++中的可重新分配引用
- 如何分配引用链的末端
- c++ 在 if 语句中分配引用变量
- 为什么不能重新分配引用的目标对象?
- 阻止重新分配引用
- C++ 从传入的引用变量中分配引用变量
- C++可以重新分配引用
- 重新分配C++引用变量
- 有条件地分配引用
- 我们可以在C++中重新分配引用吗
- C++在为指针分配引用时获取临时错误的地址
- 为什么可以在 for 语句中重新分配引用常量
- 如何(优雅地)根据字符别名分配引用成员
- 处理赋值运算符重载;您可以重新分配引用吗?
- 对左值和右值的可分配引用