IMHO Python 2 is one of the big, important languages of computing history with a large enough user and code base which makes them go nowhere, no matter what a committee decides. I would put Cobol, C, Perl, Java, Fortran in the same league. Like 'em or not - they are here to stay.
And they've all had incompatible changes over the years. There's C89 code that won't compile under C99, a good amount of Perl4 code won't compile under Perl5, let alone 6, Fortran 66 code that won't compile under more modern versions of fortran, etc. This myth that this is a python thing is complete hogwash if you look at the history of programming languages.
I think I meant to write Perl 5, completely forgot about the Perl 4 vs. Perl 5 excitement in the early 90s.
I am not sure yet whether Python 2 to Python 3 is more like Perl 4 to Perl 5 or more like Perl 5 to Perl 6, but for Python's sake I hope the former.
Could be that the header file is not compatible with C99 either. This seems to me rather likely.
Also it might be that the ABI changed in a way that the C89. This depends on platform and tool chain.
There is a large amount of code which is compatible. It is easy though to get an example which isn't.