Компиляторы C99 должны определить символ препроцессора __STDC_VERSION__
со значением 199901L, который C90 не должен делать (ничто не мешает им это делать и при этом быть совместимым с C90, но я сомневаюсь, что они это делают). Очевидно, что для несовместимых компиляторов или компиляторов в несоответствующем режиме ничего не гарантировано. И все еще остается вопрос об ошибках и переходах (в прошлый раз, когда я проверял, например, g ++ все еще не определял эквивалентный макрос в значении, указанном для C ++ 98, в то время как большинство знакомых мне людей считают, что для них было бы более полезно сделайте это вместо ожидания реализации export
).