解决:
需要将 indclude "pch.h" 放到文件最顶端
原因:
编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。(在编译的时候,在#include "stdafx. h"前面的语句都不予以编译)
预编译头文件pch
预编译头文件(扩展名为.PCH),是为了提高编译效率而使用的一种方法,把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里.避免每次编译时去重新编译没有修改的所有文件,这些预先编译好的代码可以是任何的C/C++代码。
使用预编译头文件的操作步骤:
1) 添加一个stdafx.h文件(名字随便取, 这里用了VS默认提供的名称), 在这个.h文件里include要使用的头文件(一般是外部的库, 自己写的不常变的头文件也可以加进来)
2) 添加一个stdafx.cpp文件, 并include "stdafx.h"
3) 项目属性-->c/c++-->Precompiled设置为Use Precompiled Header, stdafx.h
4) stdafx.cpp属性-->c/c++->Precompiled设置为Create Precompiled Header, stdafx.h
5) done!
参考: