もしそれがうまくいくかどうかを知るためには、私はヘッダファイルに関数を完全に定義し、 cppファイル。 C++関数は、使用されている変換単位で定義する必要はありません。そのため、ヘッダーファイルはほとんどすべて正方向の宣言(インライン関数を除く)です。しかし、私はこのプロジェクトをコンパイルしようとしたとき、未解決の外部があると言いました。ヘッダファイルがコンパイルされていないか(C++ Visual Studio 2015)
ヘッダーファイルの内容全体をソースファイルに移動しても(ヘッダーファイルを削除した)、コンパイルして正常に実行されました。だから、プロジェクトをビルドするときにヘッダファイルがコンパイルされないだけですか、それとも私が知らない例外がいくつかありますか?
さらに、プロパティエクスプローラのヘッダーファイルのプロパティに移動してFile Type
をC/C++ Code
に設定し、拡張子を.cppに変更しても、コンパイルされません(ただし、単に削除しても私は奇妙な部分だと思う新しいソースファイルを作成する)。
(私は/Za
無効の拡張子を持つ働いている、それが何かを変更した場合)
ここでは、コードファイルには、ヘッダファイルがで含まれてい
//main.cpp
void foo();
void main()
{
foo();
}
とヘッダファイル
//test.h
#include <iostream>
void foo()
{
std::cout << 'a';
}
ヘッダーファイルは、 '#include'前処理を介して翻訳単位に引き込まれない限りコンパイルされません。あなたの唯一の.cppファイルにはこのようなインクルードが含まれていないので、コンパイルされていないため、その(そして明らかにあなたの唯一の)翻訳単位では利用できません。 – WhozCraig
http://faculty.cs.niu.edu/~mcmahon/CS241/Notes/compile。html –