Clang defines __GNUC__ to 4, as that represents its level of support for the GNU C dialect. The gcc compiler does not provide a macro indicating the compiler separately from the dialect supported. We must therefore use the __clang__ macro to avoid false positives.