关于嵌入式C&&C++的一些编程问题(二)

本文的框架以及大部分内容都是基于博客http://blog.csdn.net/wzhcalex/article/details/54898628;并在此基础上写了一些自己的总结;该系列问题的的提出是源于对TI的CCS IDE针对达芬奇平台的C++编程支持程度的探究!

2017/12/17

首先要讨论的是关于C&&C++语言标准的发展情况

对于嵌入式开发来说,C语言由于其实时性、接近硬件底层编程的特性可以说是必备的工具;但是有时候对于一些复杂的应用程序实现时,C++可以说是一个很好工具;所以如果嵌入式处理器的编译器能够很好的支持C++的特性的话,将会为开发带来便利!在上世纪90年代的时候,C++确实出现过一个分支用于嵌入式——Embedded C++,但是后来好像并没有继续发展下去;可以在官网了解http://www.caravan.net/ec2plus/index.html;扯远了,下面开始捋一下C&&C++的标准,是参考了一下文章内容:

1.1、C++相关基础知识点
(1)C++的由来
    本贾尼·斯特劳斯特卢普在1982年,美国AT&T公司贝尔实验室的Bjarne Stroustrup博士在c语言的基础上引入并扩充 了面向对象的概念,发明了—种新的程序语言。为了表达该语言与c语言的渊源关系,它被命名为C++。而Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)博士被尊称为C++语言之父。
(2)C++语言的标准
  C++ 98 标准
  C++标准第一版,1998年发布。正式名称为ISO/IEC 14882:1998[17] 

 C++ 03 标准
  C++标准第二版,2003年发布。正式名称为ISO/IEC 14882:2003[18]  。
  C++ 11 标准
  C++标准第三版,2011年8月12日发布。正式名称为ISO/IEC 14882:2011[19]  。
  C++11对容器类的方法做了三项主要修改。
  首先,新增的右值引用使得能够给容器提供移动语义。其次,由于新增了模板类initilizer_list,因此新增了将initilizer_list作为参数的构造函数和赋值运算符。第三,新增的可变参数模板(variadic template)和函数参数包(parameter pack)使得可以提供就地创建(emplacement)方法。
  C++ 14 标准
  C++标准第四版,2014年8月18日发布。正式名称为ISO/IEC 14882:2014[21]  。
  C++14是C++11的增量更新,主要是支持普通函数的返回类型推演,泛型 lambda,扩展的 lambda 捕获,对 constexpr 函数限制的修订,constexpr变量模板化等[22]  。
(3)C++11值得学习的新特性
·智能指针如shared_ptr、weak_ptr等
·rvalue reference
·function/bind
·lambda expression and closure

1.2、关于C语言的发展

ANSI C和ISO C
C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。
C89和C90
1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989 “Programming Language C”正式生效。这个版本的语言经常被称作”ANSI C”,或有时称为”C89”(为了区别C99)。 在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC 9899:1990。这个版本有时候称为C90或者ISO C。因此,C89和C90通常指同一种语言。 
传统C语言到ANSI/ISO标准C语言的改进包括:
增加了真正的标准库
新的预处理命令与特性
函数原型允许在函数申明中指定参数类型
一些新的关键字,包括 const、volatile 与 signed 宽字符、宽字符串与字节多字符
对约定规则、声明和类型检查的许多小改动与澄清


C99
2000年3月,ANSI 采纳了 ISO/IEC 9899:1999 标准。这个标准通常指C99。 C99新增了一些特性,如:
支持不定长的数组,即数组长度可以在运行时决定。
变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。
初始化结构的时候允许对特定的元素赋值。
允许编译器化简非常数的表达式。
取消了函数返回类型默认为 int 的规定。 


但是各个公司对C99的支持所表现出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的时候,微软和Borland却似乎对此不感兴趣,他们把更多的精力放在了C++上。

C11
在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准。这个标准通常即C11,它是当前C程序语言的最新标准。

你可能感兴趣的:(C&&C++嵌入式编程)