Note that this does not handle MSVC which supports this since VS2017 with some compiler flag.
It also assumes that a compiler that supports the attribute also supports __has_cpp_attribute,
but this might not be valid everywhere (eg MSVC does not support the latter according to documentation).
(I decided to define [[fallthrough]] on compilers that do not support it, so future updates need to do less work, and so we can actually use something that is standard (even if not the one we support. This might not be best practice (since it isn't obvious that it is a define and thus handled (via includes in precompiled.h) by older compilers), but we do have something similar for C99's __func__ and I like the eased upgrade path.)