August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
C和C++有很多小的不兼容之处。所有这些不兼容都能给程序员带来麻烦,但也都可以在C++中解决。如果没有其他不可解决的不兼容问题,C代码片段可以作为C程序编译并使用extern"C"机制与C++程序链接到一起。
将一个C程序转换为C++程序可能遇到的主要问题有:
·次优的设计和编程风格。
·将一个void*隐式转换为一个T*(即,没有使用显式类型转换)。
·在C代码中将C++关键字用作了标识符,如class和private。
·作为C程序编译的代码片段和作为C++程序编译的代码片段链接时不兼容。
C程序自然按C风格来编写,例如K&R风格[Kernighan,1988]。这意味着到处使用指针和数组,可能还有大量的宏。用这些设施编写大型程序,很难做到可靠。还有,资源管理和错误处理代码通常是为特定程序专门编写的,通过文档说明(而不是语言和工具所支持的),而且文档往往不完整,代码的依附性也太强。将一个C程序简单地逐行转换为一个C++程序,对得到的程序最好进行全面检查。实际上,我将C程序改写为C++程序从来没有无错的。这种改写工作,如果不改变基础结构,那么根本的错误来源也就仍然存在。如果原始的C程序中就有不完整的错误处理、资源泄漏或是缓存溢出,那么在C++版本中它们还会存在。为了获得大的收益,你必须改变代码的基础结构:
(1)不要将C++看作增加了一些特性的C。你可以这样来使用C++,但这将导致次最优的结果。为了真正发挥C++相对于C的优势,你需要采用不同的设计和实现风格。
(2)将C++标准库作为学习新技术和新程序设计风格的老师。注意它与C标准库的差异(例如,字符串拷贝用=而不是strcpy()以及字符串比较用==而不是strcmp())。 ...
Read now
Unlock full access