关于c/c++

2018-12-27  本文已影响0人  zhiwang1757

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。

上一篇下一篇

猜你喜欢

热点阅读