I would agree with you allmost any time. But (of cause there is a but) we are only using functions that was standard pre waaay old and I did actually spend some time looking for functions/types etc. and nothing has changed. As we are not touching internal stuff, allocating structs or termcap/terminfo etc. I am convinced that they are binary compatible (and I ran wine with some of the oldes curses lib I could find).
the point is not only at function prototype level, lost of curses functions are defined as macros, and this can change from implementation to implementation. Hence the .so / header peering and the rest...
A+