Reversing the #include idiom
There's an idiom in C and C++ whereby of you include a header file, you write
#ifndef FILE_H_INCLUDEDIt occurs to me that it should actually be
#define FILE_H_INCLUDED
// stuff
#endif
#ifndef EXCLUDE_FILE1_HThis is a minor point, however it means that you can legitimately exclude certain header files if for some reason you don't want to include them:
#define EXCLUDE_FILE1_H
#endif
gcc foo.c -DEXCLUDE_FILE1_H