3 ms·
> Except C is quite a poor example for how to use modules. How come? C makes it trivial to create self-contained modules.
by rewmie 3y ago
> Except C is quite a poor example for how to use modules.
How come? C makes it trivial to create self-contained modules.
- pjmlp 3y agoC makes it trivial to create poor man's modules. It lacks almost everything that a programming language with modules offers on its type system, and compiler toolchain. Proper public/private types, module initialization/shutdown, linking with type checking, namespaces. One can fake modules with void pointers, static types on translation units, prefixes that hopefully no one else is using, and that is about it.
- rewmie 3y ago> Proper public/private types, Modules either have types as part of their interface, or haven't. I C, the declarations shipped in the interface header represent the interface, and the types declared in it are public types. C also supports symbols with internal linkage. What exactly is missing? > module initialization/shutdown, What's wrong with initializing objects? Languages such as Rust also rely on factory methods to instantiate objects. > linking with type checking, The interface headers define the symbols, which must correspond to the symbols handled by the linker. What's missing? > namespaces. That definitely C doesn't support as a first class citizen, but this is nothing that symbol prefixes don't handle. What's missing, then?