For those who would like to use #pragma once and include guards together: If you are not using MSVC, then you won't get much optimization from #pragma once.
And you shouldn't put "#pragma once" into a header that supposed to be included multiple times with each inclusion possibly having a different effect.
Here is a detailed discussion with examples about #pragma once usage.