使用头文件和StdAfx.h

时间:2012-08-07 14:03:10

标签: c++ visual-studio-2010

我有简单的测试控制台应用程序。我正在尝试使用simple.h文件中定义的函数nike2,并且实现在simple.cpp中。 simple.h和simple.cpp文件都位于与主项目不同的目录中。

我在项目浏览器中添加了simple.h到“Header files”和simple.cpp到“Source files”(我不确定是否需要)

控制台应用:

#include "stdafx.h"
#include "..\..\simple.h"

int _tmain(int argc, _TCHAR* argv[])
{
nike2(5);
return 0;
}

Simple.h

#include <cstdlib>
#include <iostream>

#ifndef MEMORY
#define MEMORY

int var;
int  nike2(int f);

#endif /*MEMORY*/

Simple.cpp

#include <cstdlib>
#include <iostream>
#include "simple.h"


int  nike2(int f)
{
 return 0;
}

编译时遇到错误:

Error   4   error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?   c:\c\simple.cpp 11  1   usingHeader

为什么呢?什么是神奇的“StdAfx.h”用于?

UPD

simple.cpp现在看起来像这样,但仍然有相同的错误

#include "C:\c\usingHeader\usingHeader\stdafx.h"
#include <cstdlib>
#include <iostream>
#include "simple.h"


int  nike2(int f)
{
return 0;
}

3 个答案:

答案 0 :(得分:7)

Stdafx.h用于制作预编译的标头。它包含一些最标准和最常用的include

这主要是为了加快编译过程,因为WinAPI是一个非常重的东西。

你也可以查看this question,它有更详细的答案。

答案 1 :(得分:2)

stdafx.h包含标题包括您不希望更改的内容。标准库之类的东西包含在stdafx.h中,所以它们只需要编译一次。您应该在任何需要的地方包含stdafx.h。如果您不想使用它,可以在项目首选项中将其关闭。

答案 2 :(得分:2)

  

什么是魔法“StdAfx.h”用于?

它用于Visual Studio中的预编译头文件。

您可以将其包含在.cpp文件中,也可以为那些不需要包含所有Windows标头的文件选择“不使用预编译标头”。