Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

using header files and StdAfx.h

Ihave simple test console application. I'm trying to use function nike2 from defined in simple.h file and realization is in simple.cpp. Both simple.h and simple.cpp files are in different directory than main project.

I have added simple.h to "Header files" and simple.cpp to "Source files" in project explorer (I'm not sure it is needed)

Console app:

#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;
}

While compile I got error:

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

Why? What is magic "StdAfx.h" used for?

UPD

simple.cpp now looks this way, but still have the same error

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


int  nike2(int f)
{
return 0;
}
like image 281
vico Avatar asked Dec 21 '22 17:12

vico


2 Answers

Stdafx.h is used for making pre-compiled headers. It contains some of the most standard and commonly used includes.

That is made mainly to speed-up the compilation process, because WinAPI is a very heavy thing.

You could also check this question, it has a more detailed answer.

like image 146
SingerOfTheFall Avatar answered Dec 24 '22 02:12

SingerOfTheFall


stdafx.h contains header includes for things that you aren't expecting to change. Things like standard libraries are included from stdafx.h so they only have to be compiled once. You should include stdafx.h everywhere you need it. If you would rather not use it, you can turn it off in the project preferences.

like image 36
Samuel Avatar answered Dec 24 '22 02:12

Samuel