关于c/c++
1、C和C++是两种截然不同的语言,区别表现从发展历史到设计哲学到对程序员的思维影响。
2、C语言模拟了经典计算机体系结构“单CPU内存模型”,对硬件的直接操作使得C语言能在在系统编程领域屹立不倒。
3、C语言是面向过程的,编程的基本元素结构和函数,但是其实C语言也能用于编写面向对象的程序,Linux内核中到处都存在类似的用法。相比较而言,C++支持的编程范式过程式,面向对象,泛型,元语言,如果说C语言为程序员提供了很少的工具集(里边的每个工具都必要且锋利),那么C++向程序员提供的无疑是各种各样的工具集套件。相比于C编程,程序员的选择会更加多样性但其实也是负担。
4、C++从带类的C发展到现在,维持了对C的兼容,从现在来看确实带来了很大的包袱,可是如果回到开始的年代,C的程序员怎么会那么容易接受它。C语言中没有bool类型,当然可以包括头文件<stdbool.h>,C++所有函数需要先声明后使用。C/C++像话调用需要遵循一定的准则,从发展的角度,C++调用C是比较常见的。与C++相比C语言中函数形参列表的void不能沈略,如果省略表示可以接受任意实参调用。
// implementation.h---this a c++ header file
#ifndef _IMPLEMENTATION_H_
#define _IMPLEMENTATION_H_
#ifdefine _cplusplus
extern "C" {
#endif
#include "xxxx.h" // this is a C header
#ifdefine _cplusplus
......
......
.......
}
#endif
#endif
在某些场景中,也需要C调用C++,首先要将C++函数封装并以extern “C”的形式暴露出来,这样的函数才满足C语言编译和链接的规范,因为C语言不支持函数重载,自然对于C++的name magling的符号无法解析,如果你试图耍小聪明骗过编译器,也是一种未定义的行为!
5、C/C++二进制兼容问题,数据结构的兼容以及接口的兼容。
6、思考问题的方式,一般来说C程序员偏向bottom-up,而C++程序员则偏向top-down。