0

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が、任意の翻訳単位に含めることができるモジュラー コンポーネントである必要があります。

4

2 に答える 2

0

あなたの目的を理解できたかどうか確信が持てません。そのため、毎回テーブルにアイテムを追加した後、プロジェクト コードを再コンパイルして、コンパイル警告によって使用されていないものを見つけます。非効率な方法のように聞こえます。

于 2013-06-28T01:45:33.553 に答える
0

-Wunused-but-set-variable を使用するか、より広い効果を得るには -Wunused または -Wall を使用します。

于 2013-06-28T01:39:57.810 に答える