February 06, 2006 Namespaces (from comp.lang.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 |
Copyright © 1999-2021 by the D Language Foundation