我有MyClass.cpp
和MyClass.h
个文件。由于MyClass.cpp
已#include "MyClass.h"
,我将stdafx.h
置于MyClass.h
。在编译期间我收到错误:
在查找预编译标头时意外结束文件。你忘了在你的来源添加'#include“stdafx.h”'吗?
为什么呢?如果MyClass.cpp
包含MyClass.h
,则应包含MyClass.h
的所有行,这些行包含stdafx.h
。
答案 0 :(得分:1)
如果将#include "stdafx.h"
放入.h文件中,则无关紧要。编译器并不关心。它希望将#include "stdafx.h"
视为.cpp文件的第一行,除非您有"不使用预编译的标题"作为源文件的编译器选项..原因与预编译头有关。我无法真正提供技术解释,但只是这样做会让生活更轻松。
答案 1 :(得分:1)
如果你想预编译MyClass.h
,那就另辟蹊径了。
MyClass.h
不包含stdafx.h
stdafx.h
包括MyClass.h
MyClass.cpp
包含stdafx.h
作为第一个指令。为了清晰代码,它还可能包含MyClass.h
。