I'm working on a codebase that is known to only run on windows and be compiled under Visual Studio (it integrates tightly with excel so it's not going anywhere). I'm wondering if I should go with the traditional include guards or use #pragma once
for our code. I would think letting the compiler deal with #pragma once
will yield faster compiles and is less error prone when copying and pasting. It is also slightly less ugly ;)
Note: to get the faster compile times we could use Redundant Include Guards but that adds a tight coupling between the included file and the including file. Usually it's ok because the guard should be based on the file name and would only change if you needed to change in the include name anyways.
#pragma once
allows the compiler to skip the file completely when it occurs again - instead of parsing the file until it reaches the #include guards.As such, the semantics are a little different, but they are identical if they are used they way they are intended to be used.
Combining both is probably the safest route to go, as in the worst case (a compiler flagging unknown pragmas as actual errors, not just warnings) you would just to have to remove the #pragma's themselves.
When you limit your platforms to, say "mainstream compilers on the desktop", you could safely omit the #include guards, but I feel uneasy on that, too.
OT: if you have other tips/experiences to share on speeding up builds, I'd be curious.