I was “discussing” with Claude about using #define guards vs. #pragma once for C++ header files. At some point, Claude wrote that:
If your library is only ever going to target modern mainstream compilers (which, realistically, is true for almost everyone today), plain
#pragma once
is fine and is what most modern C++ style guides (including Google’s and LLVM’s) now recommend by default.
I did remember that, last time I checked, Google’s C++ Style Guide required #define guards (not #pragma once) for header files. That is still true as of today (August 18th, 2026); quoting Google’s C++ Style Guide on this point:
All header files should have
#define
guards to prevent multiple inclusion. The format of the symbol name should be.
<PROJECT><PATH><FILE>H So I made my point to Claude, and it replied apologizing for its error:
You’re right, and I apologize for the error. Looking at the actual page, Google’s C++ Style Guide explicitly requires
#define
guards, not#pragma once
This is another example showing how AI output cannot be 100% trusted, and should always be carefully reviewed.
On AI Hallucinations #
I briefly asked another AI (Gemini) about AI hallucinations (like the previous example with Claude), and it interestingly pointed out that:
AI models predict the next most likely word based on patterns in data.
They do not have real-world awareness or a true concept of “truth.”
That is something to keep in mind when dealing with AI.