digitalmars.D - Namespaces (from comp.lang.c),
- ZZ (22/40) Feb 06 2006 Yes and no. First of all, namespaces are poorly designed in C++ --
While working on Ares you might find the following discussion interesting. Bellow is a snip from a comment made by Plauger.2. contrai-wise, namespaces don't seem to be particularly OO or strongly C++ like. 3. adding *anything* to the standard is going make C more complex 4. I think some features of C99 were a step too far and its wide-spread non-adoption indicates other people think the same. (I liked bool :-) )In my opinion, C++-style namespaces could be added to C without too much difficulty, and without drastically increasing the complexity of the language.Yes and no. First of all, namespaces are poorly designed in C++ -- they fail to solve most of the problems advanced as justification for adding namespaces to C++. Second, and IMO more important, they do nothing to solve the much larger problem in C (and C++) of controlling the scope of macro definitions. Since C does not have user-defined overloading of operators or functions, we would at least avoid the worst problems of namespaces in C++, which are only partially mitigated by argument-dependent lookup.On the other hand, any additional feature will make the language more complex, and the line has to be drawn somewhere.Indeed. For a time in the early 1990s, I proposed picking up a number of the "simpler" C++ additions. In the end, the C committee roundly defeated all such proposals (other than // comments). In hindsight, I think the committee was absolutely right.And of course backward compatibility could also be an issue. If the language were being designed from scratch today with namespaces, either the standard library declarations could be in a single namespace, or each header could define its own namespace -- but if namespaces were added today, existing code that refers directly to declarations from the standard headers would still have to work.We certainly wouldn't want to imitate the disastrous decision in C++ of putting all existing headers in namespace std. P.J. Plauger Dinkumware, Ltd. http://www.dinkumware.com link: http://groups.google.com/group/comp.lang.c/browse_thread/thread/64518b74168d8028/e8a8915c6ab6e7bf?hl=en#e8a8915c6ab6e7bf Zz
Feb 06 2006