in reply to Why does order of #include's matter in XS file for C++ extensions under Windows?

When writing C or C++ code, there is a reasonable expectation that you are familiar with the language. One of the things that you need to do is always include system headers before program specific headers, because you may end up #defining tokens that are part of the system header files.

My guess is that you are encountering conflicts between PerlIO (which optionally imports the Perl_ functions with the stdio function names), and #include <cstdio>, which imports the C standard I/O library into C++. The perl headers are all written for C, not C++. In fact, perlio.h has #include <stdio.h> inside it. It's perfectly reasonable to expect this to interact poorly with C++ code.