This brings up an important point. MSVC
does not support C99 and Microsoft has no stated plans to support it.

Unfortunately, that's absolutely true. That's also why trying to reuse
C99/GNU99 code in an MSVC project can be a major PITA.

Besides limitations with zero sized arrays, even Visual Studio 2010's
MSVC can still not use named initializers in structs, and despite the
brand new addition of stdint.h at long last, it still lacks inttypes.h
for instance.

That was one reason I chose not to support MSVC in my own ripper. I
was taking advantage of some C99 features and the trade-off of
removing them to support MSVC was not worth it, for my project.

As far as libcdio is concerned, not much was actually needed to achieve
MSVC support. This MMC minor fix, for mixed var init and code, and the
update for zero sized arrays are pretty much the only visible
constraints that had to be applied to common code. But I guess most of
this is due to the effort of people who kept existing code MSVC friendly
until not so long ago. Other projects might not be so lucky...

If your MSVC user base is expected to be limited, and you have adequate
support for MinGW, I can understand why ditching MSVC would make sense,
as it will definitely save you time.