We all know when to use include guard, but when shall we not use it in our project?
Recently, I saw a project with mix compilation (CUDA + GCC), one header file (CUDA file) is deliberately left without include guard. I am just curious about it.
We all know when to use include guard, but when shall we not use it in our project?
Recently, I saw a project with mix compilation (CUDA + GCC), one header file (CUDA file) is deliberately left without include guard. I am just curious about it.
One case in when you do want to include the same file several times with different parameters. In this case the include file would act as a sort of template. An example are the scalers on Dosbox.
There are 2 scenarios off the top of my head:
assert.h
works)In our projects we never use include guard. We are using include antiguard:
Because if you reincluded same header - you written wrong code or worked with wrong architecture.
Include guards are used so that the include file can be included multiple times in a single compilation unit without resulting in duplicate declarations.
Do not use include guards when the file should be included multiple times in a single compilation unit and this does not result in duplicate declarations.