[解決済み] #include <Windows.h> はバッドプラクティスですか?
質問
というのは普遍的なことだと思います。
#include <bits/stdc++.h>
は悪い習慣です
その理由のひとつは、標準的なヘッダーをすべて解析して含んでしまうからで、これはほとんど常に不要です(これは移植不可能でもありますが、私の論点からは外れています)。と組み合わせると、さらに悪いことになります。
using namespace std;
のように、名前空間に大量の共通名を持つことになるからです。
next
.
しかし、どうやら
#include <Windows.h>
の組み合わせと概念的には同じことをするにもかかわらず、ほとんどの場合問題ないと判断されます (私が見たほとんどの Win32 プログラムで使用されています)。
#include <bits/stdc++.h>
+
using namespace std;
.
によると ウィキペディア :
windows.h は、C および C++ プログラミング言語用の Windows 固有のヘッダーファイルで、Windows API のすべての関数、Windows プログラマーが使用するすべての共通マクロ、およびさまざまな関数とサブシステムで使用するすべてのデータ型に対する宣言を含んでいます。これは、C言語で使用できる非常に多くのWindows固有の関数を定義しています。
なぜこのようなことになるのでしょうか?私たちが使っている特定のヘッダーをインクルードすることはできないのでしょうか?
<Windows.h>
?
解決方法は?
Msdnのドキュメントでは、(a)関数がどのヘッダーファイルで宣言されているか、(b)どのヘッダーファイルをインクルードすることになっているか、が明示的に示されています。
ほとんどの関数では
windows.h
例えば
メッセージの送信
いくつかの関数は、後から追加されたもの、または非常に特殊なユースケースであるため、他のヘッダーファイルを通してのみ利用可能です、例えば セットアップDiEnumDeviceInfo .
ですから、彼らのアドバイスに従うことは悪いことではありません。しかし、マクロ経由でインクルードする前に、いくつかの部分を無効化することを強くお勧めします。
#define NOMINMAX
#include <Windows.h>
というのは、そうしないと
min
と
max
と干渉してしまうマクロです。
std::min
と
std::max
.
関連
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] ループ内での変数宣言、グッドプラクティスかバッドプラクティスか?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み] <bits/stdc++.h> を #include しない方が良いのでしょうか?