Remix.run Logo
valleyer 2 hours ago

Names beginning with double underbar (or single underbar + capital letter) are reserved. Single underbar + lowercase is not. C23 §6.4.2.1.

uecker 2 hours ago | parent | next [-]

Also reserved as identifier with file scope, just not for "any use". In any case, the program used underbar + capital letter.

valleyer an hour ago | parent [-]

Ah, I hadn't noticed _SimpleSetNode.

poly2it 2 hours ago | parent | prev [-]

This leaves out part of the clause.

  All identifiers that begin with an underscore are reserved for use as identifiers with file scope in both the ordinary and tag name spaces.
Single underscore followed by non-uppercase is allowed, but not in file scope. This means that you can use them in structs and as local variables, but never as globals.
valleyer an hour ago | parent [-]

You're right, and I guess I've been breaking that rule for a while. What's the purpose there? The double-underbar and underbar-capital rules seem to be allowing for non-conflicting introduction of keywords. Is the single-underbar rule to protect standard library headers or something?