Jump to content

Like
0Likes
Dislike
Putting it all together: How to best arrange C++ source and header files


globals //and int #include header creature source
Covers the basics of what you need to do to share globals across multiple files.

4: Adsense

When I first began to learn C++ about a year ago, I was used to the good old-fashioned one-source-file model. It took me weeks to figure out how C++ arranged and compiled its source and header files. It took me over a month to figure out how to use this arrangement to create globals instantly. I am writing this to save the other beginners out there the heartache.

Here is my basic model that I use in all my applications:

------------------------------------------------------------------------------
Globals.h is the only header file included in any source file - here is how 
it's set up inside:
------------------------------------------------------------------------------
#ifndef MadeIncludes  //if we haven't done this where this file can see it, then...
#define SCREENX = 640
#define SCREENY = 480
//and other app-wide #defines

#include <windows.h>
#include <ddraw.h>
//and other system or lib includes

#include "creature.h"   //class header or some function prototypes

enum Enumeration{E_THINGY1, E_THINGY2};
#define MadeIncludes
#endif

extern int globalint;
extern char globalstring[50];
//and other globals

------------------------------------------------------------------------------
Winmain.cpp (or other main() or winmain() module)
------------------------------------------------------------------------------
#include "globals.h"
int globalint;
char globalstring[50];
//and other globals

//and then the rest of the main file's source code

------------------------------------------------------------------------------
Creature.cpp is my implementation for Creature.h that's included in globals.h
------------------------------------------------------------------------------
#include "globals.h"  //you see, this now has access to all globals and header files

class creature
{
	int x;
	int y;
	//whatever
};

//and other classes/structs

void MoveCreature(int newx, int newy);
//and other various procedures
------------------------------------------------------------------------------

I hope this helped you guys. Questions, comments, whatever, e-mail me at benbeandogdilts@cs.com. Visit my web page at www.geocities.com/benbeandogdilts. Have fun, guys!

0 Comments

Note: GameDev.net moderates article comments.