Re: Why is not more FreeBSD software written in C++?

看板FB_chat作者時間20年前 (2006/04/23 02:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串24/45 (看更多)
Don Dugger <dugger@hotlz.com> writes: > Dag-Erling Sm=F8rgrav <des@des.no> writes: > > Don Dugger <dugger@hotlz.com> writes: > > > The fact is that all your c code will compile in c++ > > That is wrong. To name just one example, C++ is much stricter about > > type casts than C is. > I mean the constructs. Casting will not change the functionality or > shouldn't. It does. Casting can be (and often is) used to force or avoid sign promotion in function arguments; for instance, isspace(ch) may produce incorrect results if ch is a char, so a cast to int is required. C allows any expression of pointer type to be assigned to a void *, and allows any expression of type void * to be assigned to any object pointer type. C++ does not. As a result, a typical C program which uses malloc() without casting the result will not compile cleanly with a C++ compiler. A competent C programmer will balk at adding the cast that C++ requires; a competent C++ programmer will correctly point out that a C++ program should not use malloc() anyway. There are other incompatiblities: const has different semantics in C and C++, namespaces aren't quite the same (there is no separation between the typedef namespace and the struct namespace in C++), etc. DES --=20 Dag-Erling Sm=F8rgrav - des@des.no _______________________________________________ freebsd-chat@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-chat To unsubscribe, send any mail to "freebsd-chat-unsubscribe@freebsd.org"
文章代碼(AID): #14IczI00 (FB_chat)
討論串 (同標題文章)
文章代碼(AID): #14IczI00 (FB_chat)