プリコンパイル済みヘッダーを使用する場合、すべてのファイルに#include "stdafx.h"
が必要ですか?または、ソースファイルだけにそれを含める必要があります。MSVCプリコンパイル済みヘッダー: "stdafx.h"を#includeする必要があるファイルはどれですか?
EDIT:また、私のプリコンパイル済みヘッダーファイル#includes
多くのSTLヘッダー。しかし、私のヘッダーでは、ときどきstd::vector
か何かを返す関数を持っているので、とにかく#include <vector>
にする必要があります。これはstdafx.hを含むより悪いですか?ユニットテストフレームワークの定義を含める必要があります。
しかし、別のプロジェクトのソースファイルにこのヘッダーファイルが含まれているとどうなりますか?この場合、最初のプロジェクトのstdafx.hはインクルードされません。 –
プロジェクトごとに1つのプリコンパイル済みヘッダーのみが許可され、各_sourceファイル_(他のヘッダーファイルには含まれません)が最初に含まれている必要があります。異なるプリコンパイル済みヘッダーファイルを持つ2つのプロジェクトで作業したい場合は、別々のプロジェクトであれば問題ありません。彼らはそれぞれ独自のヘッダーファイルを取得しますが、競合は発生しません。 – bdonlan
あなたは私を理解していません。 プロジェクト1: stdafx.hを: の#include ... One.h: ベクトルいくつかの(); One.cpp: "One.h" の#include "stdafx.hを" の#include .... プロジェクト2: Two.cpp: の#include "One.h" Two.cppのベクトルクラスは定義されていないので、ここにはエラーがあります。 –