[解決済み】#pragmaはかつて安全なインクルードガードだった?
2022-03-25 09:25:34
質問
を使用する場合、コンパイラの最適化があるとの記事を読みました。
#pragma once
その結果、コンパイルが速くなる可能性があります。 これは非標準であるため、クロスプラットフォームの互換性の問題を引き起こす可能性があることは認識しています。
これは、Windows以外のプラットフォームの最新のコンパイラ(gcc)でサポートされているものなのでしょうか?
プラットフォームのコンパイルの問題を避けたいが、フォールバックガードの余分な作業も避けたい。
#pragma once
#ifndef HEADER_H
#define HEADER_H
...
#endif // HEADER_H
心配すべきなのか?このことにこれ以上精神的エネルギーを費やすべきでしょうか?
解決方法は?
使用方法
#pragma once
は最近のどのコンパイラでも動作するはずですが、標準の
#ifndef
インクルードガードです。うまくいきますね。ひとつだけ注意点があるとすれば、GCCでは
#pragma once
前に
バージョン3.4
.
また、少なくともGCC上ではそうであることがわかりました。
を認識し、標準の
#ifndef
インクルードガードを最適化し
と比べても、それほど遅くはならないはずです。
#pragma once
.
関連
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】識別子 "string "は未定義?
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み] #pragma once vs include guards? 重複
-
[解決済み] かつて#pragmaはC++11の標準に含まれていたのか?