VS2012には、プリコンパイル済みヘッダーを使用した非常に基本的なプロジェクトがあります。すべての「共通」インクルードをstdafx.hに追加することになっていること、およびこれを各.cppファイルに含める必要があることを知っています。したがって、基本的な設定は次のようになります。
Foo.h:
#ifndef FOO_H
#define FOO_H
class Foo {
public:
Foo();
~Foo();
void do(string str);
};
#endif
Foo.c:
#include "stdafx.h"
#include "Foo.h"
void Foo::do(string str) {}
stdafx.hで:
#include <string>
using namespace std;
プリコンパイル済みヘッダーがなければ、#include <string>
foo.hに入れます。これは、の宣言について知っている必要があるためですstring
。しかし、このfoo.hはこのセットアップでどのように知ってstring
いますか?(stdafx.hは.cppファイルにのみ含まれていることに注意してください)。
注:プリコンパイル済みヘッダーを使用する実例があります。問題は、これがどのように機能するかについてです。