これは簡単なことですが、私はC++の専門家ではありません。私はこの問題を解決するかもしれないいくつかの基本的なコーディング構造が欠けていると思っています。 Foo
はPODクラスです静的constクラスでは定義されていませんが使用されていません
static const Foo INVALID_FOO = {};
(それはC++ 03のプロジェクトに組合に使われているとして、それは、コンストラクタを持っていません):私は私のメインのヘッダファイルのいずれかで、次の定義を持っています。これは、ヘッダを含むが、私は警告を取得しています、INVALID_FOO
を使用していないソースを除き、罰金だ:私はstatic
を削除しようとしましたが、その後、私は重複定義を取得
error: 'Foo::INVALID_FOO' defined but not used [-Werror=unused-variable]
。これを前方宣言にして.cファイルで定義することもできますが、コンパイラは参照によってアクセスする必要があり、最適化を行うことができません。私はまた、-Wall
コンパイラフラグを無効にしたくないです。これを行うには良い方法があるのでしょうか?
C++ 17の '' inline'ingが助けになるのだろうか? – Bathsheba
あなたは* INVALID_FOOを各翻訳単位*(https://en.wikipedia.org/wiki/Translation_unit_(プログラミング))ごとに定義しますか?ヘッダーファイルに*宣言し、ソースファイル(実際に使用されている場所)に定義しておくのはなぜでしょうか? –
@Someprogrammerdude:ちょうどそれに基づいて答えに "あなたの答えを投稿"することをほとんど押すが、私はOPがそれを認識しているという印象を持っている。 – Bathsheba