stdafx.h到头文件

时间:2014-08-22 16:05:42

标签: c++ windows visual-c++

我有MyClass.cppMyClass.h个文件。由于MyClass.cpp#include "MyClass.h",我将stdafx.h置于MyClass.h。在编译期间我收到错误:

  

在查找预编译标头时意外结束文件。你忘了在你的来源添加'#include“stdafx.h”'吗?

为什么呢?如果MyClass.cpp包含MyClass.h,则应包含MyClass.h的所有行,这些行包含stdafx.h

2 个答案:

答案 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