Identifiers beginning with an underscore and then a capital letter, or beginning with two underscores, are "reserved for the implementation in all contexts".
This means it would be illegal according to the Standard for someone's program to #define _M_is_shared false
and break the library header file. If they used more ordinary identifiers, there would be greater risk of such a name collision in otherwise valid programs.