patterncppCritical
Is #pragma once a safe include guard?
Viewed 0 times
oncepragmaguardsafeinclude
Problem
I've read that there is some compiler optimization when using
Is this something that is supported by most modern compilers on non-windows platforms (gcc)?
I want to avoid platform compilation issues, but also want to avoid the extra work of fallback guards:
Should I be concerned? Should I expend any further mental energy on this?
#pragma once which can result in faster compilation. I recognize that is non-standard, and thus could pose a cross-platform compatibility issue.Is this something that is supported by most modern compilers on non-windows platforms (gcc)?
I want to avoid platform compilation issues, but also want to avoid the extra work of fallback guards:
#pragma once
#ifndef HEADER_H
#define HEADER_H
...
#endif // HEADER_HShould I be concerned? Should I expend any further mental energy on this?
Solution
Using
I also found that, at least on GCC, it recognizes the standard
#pragma once 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 #pragma once 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 #pragma once.Context
Stack Overflow Q#787533, score: 280
Revisions (0)
No revisions yet.