The problem seems to be one of command line interface. In the C/C++ world, you specify the language version using a flag passed to the compiler. e.g. -std=c++98 In most other programming languages, you specify language version by installing multiple copies of the compiler/interpreter and running the corresponding version. The C/C++ way works fine if your language spec is updated once every 3 years. It does not work f…
It's true that C/C++ compilers usually have a flag that gates language features. However, you're still using the same libc not matter which standard you've picked. For example, there were some changes made to format strings in C99, like parsing hexadecimal numbers with scanf. If you have a C99 libc, you'll always get that behavior, even if you specified "-std=c89".