使用头文件和StdAfx.h

vic*_*ico 4 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;
}
Run Code Online (Sandbox Code Playgroud)

Simple.h

#include <cstdlib>
#include <iostream>

#ifndef MEMORY
#define MEMORY

int var;
int  nike2(int f);

#endif /*MEMORY*/
Run Code Online (Sandbox Code Playgroud)

Simple.cpp

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


int  nike2(int f)
{
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译时遇到错误:

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
Run Code Online (Sandbox Code Playgroud)

为什么?什么是神奇的"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;
}
Run Code Online (Sandbox Code Playgroud)

Sin*_*all 7

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

这主要是为了加快编译过程,因为WinAPI是一件非常沉重的事情.

你也可以查看这个问题,它有一个更详细的答案.