[解決済み】clangでglobal-constructorの警告に対処する方法は?
2022-02-05 10:02:25
質問
Clangは、以下のように警告します。
-Weverything
または
{コード
{コード
) 静的オブジェクトのコンストラクタについて。
Wglobal-constructors
なぜこの警告が必要なのか、どのように対処すればよいのか。
簡単なコード例です。
warning: declaration requires a global constructor
[-Wglobal-constructors]
A A::my_A; // triggers said warning
^~~~
解決するには?
同じ警告が発生する、より単純なケースを紹介します。
class A {
// ...
static A my_A;
A();
};
A A::my_A; // triggers said warning
これは完全に合法的で安全なC++です。
しかし、非自明なグローバルコンストラクタがあるたびに、アプリケーションの起動時間が低下します。 警告は、この潜在的なパフォーマンスの問題を知らせるためのものです。
この警告は -Wno-global-constructors で無効にすることができます。 あるいは、次のような遅延初期化スキームに変更することもできます。
class A {
public:
// ...
A();
};
A my_A; // triggers said warning
test.cpp:7:3: warning: declaration requires a global constructor [-Wglobal-constructors]
A my_A; // triggers said warning
^~~~
1 warning generated.
を使えば、この問題を完全に回避することができます(警告も表示されません)。
関連
-
[解決済み] エラー: '...'のメンバー '...'が非クラス型である場合のリクエスト
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] noexceptを本当に使うべきはいつですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】C++でファクトリーメソッドパターンを正しく実装する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み] C++の静的コンストラクタ?プライベートな静的オブジェクトを初期化する必要があります