我在 VS2012 中有一个使用预编译头文件的非常基本的项目。我知道我应该将所有“常见”包含添加到 stdafx.h 并且我需要将其包含在每个 .cpp 文件中。因此,基本设置如下所示:
富.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
. string
但是这个 foo.h在这个设置中是怎么知道的呢?(请注意,stdafx.h 仅包含在 .cpp 文件中)。
注意:我有一个使用预编译头文件的工作示例;问题是它是如何工作的。