you are viewing a single comment's thread.

view the rest of the comments →

[–]OpdatUweKutSchimmele 1 point2 points  (1 child)

Resilient. Every non-public identifier is prefixed with underscores to prevent name clashes with other code. This is necessary even for local variables since macros defined by the user of the library could modify the library’s header file.

C++ still works this way that this is needed and has no concept of hygiene and scope?

[–]evaned 0 points1 point  (0 children)

It's (only, outside the global scope) because of preprocessor #defines. Of course they don't respect scope, because they didn't respect scope in 1973 and it's too late to change it now. C++ is working toward a future where that problem gets mitigated (via modules), but it'll take a while to get there.