C、C++、boost、Qt在嵌入式系统开发中的使用
概述
嵌入式系统开发相对来说属于偏底层的开发,也就是与硬件结合比较紧密,只能使用C/C++语言。对于做平台开发的人来说,C语言真的是很“古老”的语言,属于操作系统语言!好多人会觉得C语言不好用,或者是不好用好,需要注意的地方太多!C语音的权限太高(可以直接访问到硬件资源、接口等),所以如果使用的不对,可能会导致系统崩溃!C++对于嵌入式系统来说,也算是“高级语言”啦!做应用层的开发,还是很方便的,比C语言的开发效率要高很多。
C语言
C语言大家都比较熟悉了,是属于底层编程语言了,计算机行业里有句话说“C生万物”!不得不说,C语言的出现,改变了计算机世界。
在嵌入式系统开发中,C语言可以用于各个部分的开发,uboot、内核、驱动、应用。所以只要会c语言,就可以做嵌入式系统开发,不过对于应用层的开发,还是C++好一些。
C++
在嵌入式系统开发中,大部分是使用C语言,在嵌入式Linux系统中,随着处理器的处理能力的增强,现在做业务应用开发时C++用的越来越多了。C++是面向对象的开发语言,具有高级语言的特点,使用起来语法也比C语言要好用些,虽然性能上可能会比C语言稍微低一些,但是开发效率比C语言要高的多。用过C++之后,可能就不在想用C语言了~
在使用C语言的时候,有没有让你头疼的东西?我比较头疼的是字符串处理、链表、队列、不可变长的数组……然而,在C++中这都不是问题!
C++里有字符串类string、容器类包括map、vector、list、queue等, 只需要实例化一下就可以用了!C++11中还加入了线程、std::bind, 函数对象std::function(可以替代c中的函数指针),lambda表达式等,使用起来确实很方便。
boost
boost是C++的一个扩展组件库,以下内容引自百度百科:
Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称。
Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。
Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。Boost库有个特点,85%的组件可以直接包含头文件就可以引用,这个对于嵌入式系统的使用是非常方便的!
嵌入式大家都知道,如果使用库是需要交叉编译的,如果只是引用头文件就可以使用,就不需要单独交叉编译库文件了,很少方便。
其实对于boost库我也是只用过很小一部分。
Qt
Qt 是一套跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。
Qt里封装了好多C++的类库,各种功能都有,比如常用的字符串处理类QString,可变长数组(字节数组)QByteArray,联合类型QVariant,以及类似于标准库的容器模板类QMap、QVector、QList等等,
当然Qt还有一个比较出色的地方,就是信号槽框架,这个信号槽用于类之间的通信。Qt里也封装了线程,而且其线程用起来很好用,非常容易实现异步处理,线程间通信也是用信号槽,并且线程间的信号槽是
有队列的,防止资源访问冲突。
使用Qt开发效率是很高的,包括界面与非界面的应用,使用Qt做嵌入式的应用开发会越来越多。
使用过boost与Qt组件库与封装,可能就不再想使用标准C++的啦!
C、C++、boost、Qt在嵌入式系统开发中的使用的更多相关文章
- 系统开发中按下Enter键登录系统
转载来自:http://www.jb51.net/article/54308.htm 系统开发中按下Enter键登录系统,即就是监听键盘,当按下Enter键后调用登录按钮的click()事件. JS方 ...
- 二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- 二十七、EFW框架BS系统开发中的MVC模式探讨
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- 浅谈Android系统开发中LOG的使用
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用 ...
- 系统开发中使用拦截器校验是否登录并使用MD5对用户登录密码进行加密
项目名称:客户管理系统 项目描述: 项目基于javaEE平台,B/S模式开发.使用Struts2.Hibernate/Spring进行项目框架搭建.使用Struts中的Action 控制器进行用户访问 ...
- 浅谈Android系统开发中LOG的使用【转】
本文转载自:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以 ...
- 苹果系统开发中的混合编程(2):Swift和C的相互调用
在进行Swift和C之间的相互调用时,有必要先了解一下两种语言之间的类型转换关系: C 类型 Swift 类型 bool CBool char, signed char CChar unsig ...
- 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用
首先是OC调用C++的代码. 创建一个Objective-C的项目,并创建c++文件MyCppFile.hpp和MyCppFile.cpp. 把要调用Cpp代码的文件名改成mm后缀名,项目代码 ...
- 嵌入式Linux开发系列之一: 走进嵌入式Linux的世界
转载:http://www.ibm.com/developerworks/cn/linux/l-embed/part1/index.html 随着信息化技术的发展和数字化产品的普及,以计算机技术. ...
随机推荐
- 06 Vue生命周期钩子
生命周期钩子 表示一个vue实例从创建到销毁的这个过程,将这个过程的一些时间节点赋予了对应的钩子函数 钩子函数: 满足特点条件被回调的方法 new Vue({ el: "#app" ...
- Flask 基础组件(九):请求扩展
#!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask, Request, render_template app = ...
- 关于springboot中过滤器和拦截器
在解决跨域问题中,发现拦截器和过滤器用得不是熟练.就参考了下一下两个作者的文档.希望大家也可以汲取精华 文档1 https://blog.csdn.net/moonpure/article/det ...
- nginx 信号管理
本内容只针对nginx 关闭操作罗列方法技巧,不废话直接写,Nginx的信号控制如下: 1. TERM, INT 强制关闭进程 查看nginx进程ps -aux|grep nginx root 8 ...
- 工作3年java面试题整理(自用)
基础题目 1.Java线程的状态 一. 线程状态类型:1. 新建状态(New):新创建了一个线程对象.2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该 ...
- GPO - Folder Mapping via GPO
Create a Group Policy on AD DC Server. The GPO policy will come into effect on the next login, or us ...
- Ethical Hacking - GAINING ACCESS(1)
Gaining Access Introduction Everything is a computer Two main approaches (1)Server Side Do not requi ...
- CentOS7编译安装php7.1配置教程详解
这篇文章主要介绍CentOS7编译安装php7.1的过程和配置详解,亲测 ,需要的朋友可以参考. 1.首先安装依赖包: yum install libxml2 libxml2-devel openss ...
- Spring Boot 太狠了,一次性发布了 3 个版本!
Spring Boot 太狠了,北京时间 2020/07/25 今天一次性发布了三个主要版本,三条版本线同时更新: Spring Boot 2.3.2 Spring Boot 2.2.9 Spring ...
- shell 输出json格式的内容
对于shell脚本的输出,如果要输出json格式的内容,我们可以借助python -m json.tool命令 比如 echo '{"name":"zhangsan&qu ...