Mail Archives: djgpp/1997/08/06/03:34:48
Do what I do:
For every module with classes other modules use, and code as well, make a
.cc and a .h file. In the .h file are some parts:
// foo.h
// This does what-and-such
#ifndef _PGD_FOO_H_
#define _PGD_FOO_H_
.
.
.
#endif // _PGD_FOO_H_
PGD are my initials; replace them with anything you choose, but be
consistent. This prevents a header being included twice. This is done by
the DJGPP standard headers, as in #ifndef _DJ_STDIO_H_ and suchlike.
Inside these, I put four more things. First of all, #includes needed by
anything that uses the classes. #defines for any constants useful to
modules using the classes. Any structs or enums similarly needed.
Then the classes, with their variables and implementations of simpler
functions, speed critical ones, ones that don't need to #include huge gobs
of stuff for themselves that the calling routines might not use.
(Otherwise compilation slows a lot. If I #included allegro.h in every
module cause some function in some class used set_gfx_mode, rather than
keeping the set_gfx_mode and #include to the .cc of the class...ack!)
Then I have this:
#ifndef _PGD_FOO_CC_
extern int bar,baz;
extern double quux;
#endif
to declare the global variables. In the .cc I declare _PGD_FOO_CC_ and thus
the variables don't get double declared.
The .cc has comments like the .h, then global variables and any class
variables, as in
static int fooclass::foovar=0;
as well as implementations of other class functions. It starts with the
comments, #define _PGD_FOO_CC_, #include "foo.h" for the class
definitions, #defines and everything except the global vars, any
additional includes and declares it uses internally, and then the
variables and code.
If there are public functions not in any class, these are prototyped in
the .h and the prototype is read before the function in the .cc and is
available in other modules. If there are private functions of the module
not in any class, they are prototyped in the .cc instead.
--
.*. Where feelings are concerned, answers are rarely simple [GeneDeWeese]
-() < When I go to the theater, I always go straight to the "bag and mix"
`*' bulk candy section...because variety is the spice of life... [me]
Paul Derbyshire ao950 AT freenet DOT carleton DOT ca, http://chat.carleton.ca/~pderbysh
- Raw text -