This is not going to work on MSVC, which still supports C89 only.