Advertisement

header!!

Started by August 08, 2001 02:26 PM
3 comments, last by marvano 23 years, 6 months ago
hi, i just start using header file and i have some questions, do you guys know where i can find a good tutorial about header file? #include "whatever.h" do you find this line in other .h file? or those include only fit in .cpp? doing that i end including nearly all my .h in all my .cpp, i don''t think this is the best solution.. thanks for your help..
header files are xactly the same as normal souce files xcept for a few diferences they usally just contain data type defintions and new frequently used funcitons. one thing u shoudl do is at the geigin of ure file do

#define "thenameofureheader.h"
#ifndef

put ure code here


#endif


this stop the code from being added twice into ure main file ie

#include "myheader.h"
#include "myheader.h" //will cause errors

void main()
{
}

~prevail by daring to fail~
Advertisement
I don''t want to take away from what -Zerosignull- was saying, but considering that -marvano- isn''t even clear on how header files work, I feel I should help to explain it in more detail.

There are basically 2 types of files used in C/C++:
1.) header files (.h)
2.) implimentation files (.cpp)

Header files prototype the classes/functions/structures/etc that are contained within the implimentation file.
The implimentation file contains the code for the things that were prototyped in the header file.
For example:

---myprogram.h------------------------------------------
#ifndef _MYPROGRAM_H
#define _MYPROGRAM_H

//None of this will be included if
//_MYPROGRAM_H has already been defined.

int drawPoint(int x, int y);
char * getName();

#endif
--------------------------------------------------------

---myprogram.cpp----------------------------------------

#include "myprogram.h"

int main()
{
int i = drawPoint(7, 43);
//more code here.
return 0;
}

int drawPoint(int x, int y)
{
//This is the implimentation of my drawPoint function.
}

char * getName()
{
//This is the implimentation of my getName function.
}

--------------------------------------------------------

...what good is all of this? It illustrates what -Zerosignull- was saying about "stop the code from being added twice".
Header files are expanded into the implimentation file at compile time. Adding the #ifndef and #define in the header file tells the compiler to ignore everything up to the #endif (ignore it if _MYPROGRAM_H has been defined), thus preventing multiple definitions/redefinitions of functions/classes/etc if you included the same header file multiple times.
In other words:

#include "myfile.h"
#include "myfile.h"
#include "myfile.h"

...all 3 are expanded into the CPP file, but the compiler only really looks at the 1st one, the other 2 are ignored.
I hope this helps.
so i am not clear huh? (just kidding)

Ok, I did''n know that, thanks, but my question is,
Is it normal to have a LOT of #include in all .cpp, or there is another way to regroup everything?


(I am french speaking so that''s why i am *maybe* not clear as i wish..

marvano

when you are new you will have to have lots of .h files included in all of your .cpp files, as you get better you will figure out how to use fewer. When you are new you will also have a lot of .h files in your other .h files. You should learn how to cut that down too. You should use forward declarations for classes whenever possible, but if you aren''t passing by pointer or if you are calling member functions you''ll probably have to include the .h file.

This topic is closed to new replies.

Advertisement