The sense of this should be inverted, so it's called something like might_support_buffer_protocol. That would simplify all the checks below.

Also, if these were to stay as macros, I'd have to make a bunch of tedious comments about parenthesization. Can we make them into `static inline` functions instead? (Or if `inline` is considered too outre in case someone is trying to use some ancient compiler, just making them `static` functions defined in the header file will have the same effect.)