4

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

我已将 simple.h 添加到项目资源管理器中的“头文件”和 simple.cpp 到“源文件”(我不确定是否需要)

控制台应用程序:

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

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

简单的.h

#include <cstdlib>
#include <iostream>

#ifndef MEMORY
#define MEMORY

int var;
int  nike2(int f);

#endif /*MEMORY*/

简单的.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;
}
4

3 回答 3

7

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

这样做主要是为了加快编译过程,因为WinAPI是个很重的东西。

你也可以检查这个问题,它有更详细的答案。

于 2012-08-07T14:06:36.593 回答
2

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

于 2012-08-07T14:07:00.167 回答
2

魔术“StdAfx.h”有什么用?

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

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

于 2012-08-07T14:07:33.790 回答