C89 compatibility and MSVC support