如何使用C ++编译器/链接器/技巧来检测已分配但从未随后引用的值?

时间:2013-06-28 01:29:31

标签: c++ windows linker g++ mingw

我想创建一个单例类,将其称为global_references,其中包含一堆缓存的全局值。单例类代码将从一组表中自动生成。一般方案是这样的:

global_references.h

struct global_references
{
    some_type value1;
    some_type value2;
    some_type value3;
    ...
    static const global_references& instance();
};

假设global_references::instance()初始化各种valueN变量并返回单例实例。然后各种客户端将在自己的代码中使用缓存的值:

some_translation_unit.cpp

...
x = global_references::instance().value1;

我担心的是我会在表中添加用于生成自动生成的global_references类的项目,但随着时间的推移,它们生成的一些符号将变得过时并停止在程序中使用。我想知道何时发生这种情况,最好让编译器或链接器抱怨关于未使用的符号,或者分配但从未使用过的值。这将提醒我从表中删除相应的项目。我也对任何其他相当简单的解决方案持开放态度。

我在Windows上使用MinGW [g ++ 4.6.2]。

已考虑选项

我考虑过使成员函数返回值,但-Wunused-function编译器选项仅适用于静态函数,而我需要global_references作为模块化组件,我可以将其包含在任何翻译单元中

2 个答案:

答案 0 :(得分:0)

使用-Wunused-but-set-variable,或更广泛的效果,-Wunused或-Wall。

答案 1 :(得分:0)

我不确定我是否了解你的目的。因此,每次向表中添加项后,您将重新编译项目代码以查找compile-warning未使用的内容。这听起来像是一种效率低下的方式。