[解決済み] なぜ、#pragma onceは自動的に仮定されないのですか?
2023-07-24 07:59:59
質問
一度だけファイルをインクルードするようにコンパイラに特別に指示する意味は何でしょうか?デフォルトでは意味がないのでしょうか?1 つのファイルを複数回インクルードする理由はあるのでしょうか?なぜそれを仮定しないのでしょうか?それは特定のハードウェアに関係しているのでしょうか?
どのように解決するのですか?
ここには、複数の関連する質問があります。
-
なぜ
#pragma once
が自動的に適用されないのですか?
なぜなら、ファイルを複数回インクルードしたい状況があるからです。 -
なぜ、あるファイルを複数回インクルードしたいのでしょうか?
いくつかの理由は他の回答で与えられています(Boost.Preprocessor、X-Macros、データファイルのインクルード)。私は"コードの重複を避ける"の特定の例を追加したいと思います。 OpenFOAM は、以下のようなスタイルを推奨しています。#include
というスタイルを推奨しています。例えば この の議論を参照してください。 -
OKですが、なぜオプトアウトでデフォルトでないのでしょうか?
実際に規格で指定されていないからです。#pragma
は定義上、実装に特化した拡張機能です。 -
なぜ
#pragma once
はまだ標準的な機能になっていないのでしょうか?
プラットフォームに依存しない方法で何が "同じファイル" であるかを突き止めることは、実際には驚くほど難しいからです。 詳細については、この回答を参照してください。 .
関連
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] 8192個の要素にループをかけると、プログラムが遅くなるのはなぜですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
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
-
[解決済み] テスト
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み] #pragma once vs include guards? 重複
-
[解決済み] かつて#pragmaはC++11の標準に含まれていたのか?