Another issue I've had with strict conformance in gcc/clang even with regular C is that it will always replace #include <stdint.h> with its own copy even when forcing a C standard that doesn't have it like C89, which also means it will try to use language features you don't (or shouldn't) have. And trying to include your own stdint.h under -std=c89 can fail as well due to it substituting the internal one, even if using -nostdinc or custom -isysroot/-isystem options.
https://www.youtube.com/watch?v=7fGB-hjc2Gc