8afd8487f8
This was more complicated than I would like, but it's just an unfortunate GCC/clang difference. I don't have access to all the C compilers out there, so this may still have problems with other compilers that implement some form of `#pragma GCC diagnostic` support but don't actually behave the same as some versions of GCC. fixes #323