I've read that there is some compiler optimization when using
#endif // HEADER_H
It should work on any modern compiler, but I don't see any reason not to use a standard
#ifndef include guard. It works just fine. The one caveat is that GCC didn't support it before version 3.4.
I also found that, at least on GCC, it recognizes the standard
#ifndef include guard and optimizes it, so it shouldn't be much slower than