3 ms·
I think that "namespacing" basic types such as u32 is completely unecessary. In what world would an u32_MYLIB would be different than an u32_SOMELIB? Basic ty
by stephc_int13 3y ago
I think that "namespacing" basic types such as u32 is completely unecessary.
In what world would an u32_MYLIB would be different than an u32_SOMELIB?
Basic types are common enough.
- pavlov 3y agoThe preprocessor doesn’t know that u32 defined in foo.h is the same type as u32 defined in bar.h. So you’ll get an error when importing both.
- pornel 3y agoIf C made this change, it could also make it legal to redefine u32 etc as appropriate integer types any number of times without erring.
- saagarjha 3y agofoo.h defines i64 as “long” and bar.h defines it as “long long”. Now what?
- kevin_thibedeau 3y agoThis would break legacy code. I had one employer with a bool type that was a 32-bit integer because of obscure alignment issues. This is why _Bool exists and the bool typedef has to be brought in explicitly with stdbool. You can't just go and usurp popular short type names. The standard reserved *_t and _[A-Z].+ for this purpose. People have been writing portable code with the expectation that future standards aren't going violate that promise and break things.
- alexvoda 3y agoThis is just one of the reasons that new languages that dispense with outdated assumptions and insted make assumptions more suitable to our times are a good thing. C and C++ are really old and some things can not be fixed with libraries.