# Why We Should Double-Check the AI Output: Claude Lies (AKA AI Hallucinations)

> Source: <https://giodicanio.com/2026/08/18/why-we-should-double-check-the-ai-output-claude-lies-aka-ai-hallucinations/>
> Published: 2026-08-18 16:20:39+00:00

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](https://google.github.io/styleguide/cppguide.html#The__define_Guard) (**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](https://giodicanio.com/2026/07/28/why-we-should-double-check-the-ai-output-a-bug-which-wasnt/) 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.
