Deleted comment
It's VAXocentrism for the 21st century. http://www.catb.org/jargon/html/V/vaxocentrism.html
- Pointer types are basically fungible in C (otherwise there would be no void-ptr type)
- There's no compile-time knowledge of the segment a pointer references to prevent you from dereferencing a pointer to an offset from segment A when segment B is loaded (compare this to Rust's parameterization of Box types by their allocator)
- Struct padding is painful and tacked on
- "unsigned char" isn't default even though it'd make much more sense for it to be (What "char"acter is negative? You can have a signed byte/octet, but a character is—in 1979, at least—basically an enum/sum type.
UNIX API fragmentation is still a problem, but my point is that POSIX was trying to unify existing implementations rather than a greenfields project to generate a set of portable APIs.