电子发烧友网 > 嵌入式技术 > > 正文

嵌入式C语言的7个关键知识点详细说明

2021年01月03日 18:08 ? 次阅读

1void与void*

void表示的是无类型,不可以采用这个类型声明变量或常量,但是可以把指针定义为void类型,如void*ptr。

void指针可以指向任意类型的数据,可用任意数据类型的指针对void指针赋值,比如int*ptrInt;void*ptrVoid=ptrInt;指针的赋值可以认为是地址的传递,而一般的32位系统指针都是占用4个字节,所以指针赋值仅仅只是这4个字节的赋值与类型没什么关系。


1void*memcpy(void*dest,constvoid*src,size_tlen);2void*memset(void*buffer,intc,size_tnum);

2volaTIle关键字

volaTIle修饰表示变量是易变的,编译器中的优化器在用到这个变量时必须每次都小心地从内存中重新读取这个变量的值,而不是使用保存在寄存器里的备份,有效的防止编译器自动优化,从而与软件设计相符合。




3数据占用大小

数据占用大小是指不同的数据类型在平台中所占用的字节个数,不同的平台不同类型占用的字节个数稍有不同,不过在对应的平台进行开发过程中,必须要对每个数据类型的占用大小了如指掌,否则各种数据溢出,数据越界等等接踵而来。下面是简单罗列的一些数据占用情况:(在一般32位PC中)


char8bit
short16bit
int32bit
long32bit
float32bit
double64bit

4const与指针

const是恒定不变的意思,与指针的结合主要的问题是其const在指针中的位置导致该变量属性不同。主要的识别办法是去掉数据类型,看const修饰的是哪部分。

constint*ptr-->const*ptr-->那么const修饰的就是*ptr,而*ptr表示的是指针所指向内容,所以其总体也叫"常量指针"表示值无法改变。

int*constptr-->*constptr-->那么const修饰的就是ptr,而ptr表示的是指针变量,指针变量的值就是地址,所以总体也叫"指针常量"表示地址无法改变。

5结构体与共联体

对于结构体和共联体在嵌入式领域是使用得非常频繁的,一些可编程芯片提供的寄存器库都是采用结构体和共联体结合的方式来提供给软件人员进行开发,同时在平时的编码过程中这两个数据类型的灵活应用也能够实现代码更好的封装与简化。如下面的简单示例,就可以非常灵活的访问Val中的bit位。

1typedefunion2{3BYTEVal;4struct__packed5{6BYTEb0:1;7BYTEb1:1;8BYTEb2:1;9BYTEb3:1;10BYTEb4:1;11BYTEb5:1;12BYTEb6:1;13BYTEb7:1;14}bits;15}BYTE_VAL,BYTE_BITS;

6预定义标识符

一般编译器都支持预定义标识符,这些标识符结合printf等打印信息帮助程序员调试程序是非常有用的,一般编译器会自动根据用户指定完成替换和处理。
如下是常用的标识:__FILE__:表示进行编译的源文件字符串;__LINE__:表示当前文件的行号;
__DATE__:表示文件日期;__TIME__:表示文件时间;
使用范例:

1printf("file:%s\nline:%d\ndata:%s\nTIme:%s\n",__FILE__,__LINE__,__DATE__,__TIME__);




7#与##

#:是一种运算符,用于带参宏的文本替换,将跟在后面的参数转成一个字符串常量。

##:是一种运算符,是将两个运算对象连接在一起,也只能出现在带参宏定义的文本替换中。

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

《嵌入式技术 基础课程》之逆向-X86汇编

我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程   分成4篇:分别是
发烧友学院发表于 2019-01-21 00:00? 1650次阅读
《嵌入式技术 基础课程》之逆向-X86汇编

常用十大电子元器件有哪些?新手必读!

随着电子技术及其应用领域的迅速发展, 所用的元器件种类日益增多,学习和掌握 常用元器件的性能、用途、质量判别方法...
发表于 2021-01-03 09:29? 0次阅读
常用十大电子元器件有哪些?新手必读!

解析RISC-V正面临的挑战

新的处理器指令集架构(ISA)并不会经常出现。加州大学伯克利分校开发的开源RISC-V ISA 已经....
发表于 2021-01-01 10:54? 245次阅读
解析RISC-V正面临的挑战

晶合集成发布110nm-LP MCU工艺平台

2020年12月,合肥晶合集成电路股份有限公司(以下简称“晶合集成”)与矽成积体电路股份有限公司(以....
发表于 2021-01-01 10:37? 213次阅读
晶合集成发布110nm-LP MCU工艺平台

嵌入式开发中常用的软件架构

在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整....
发表于 2021-01-01 10:16? 310次阅读
嵌入式开发中常用的软件架构

解析嵌入式技术的发展趋势及挑战

今天嵌入式系统无处不在,以至于我们几乎已经忘记什么是嵌入式系统,正如硅谷知名嵌入式专家Jack Ga....
发表于 2021-01-01 09:56? 342次阅读
解析嵌入式技术的发展趋势及挑战

物联网行业智能解决方案推荐

2020年即将进入尾声,全球疫情和国际形势瞬息万变,5G新基建部署如火如荼,AIoT智联网热潮涌动不....
发表于 2021-01-01 09:50? 396次阅读
物联网行业智能解决方案推荐

工业智能系统中的嵌入式操作系统

国际政经环境日益复杂,国产芯片风起云涌,国产操作系统受到国内产业界、学术研究机构和政府部门高度重视。....
发表于 2021-01-01 09:47? 215次阅读
工业智能系统中的嵌入式操作系统

嵌入式开发的现状及未来趋势分析

近年来,随着移动互联网、物联网的迅猛发展,嵌入技术日渐普及,嵌入式应用领域日益亲民,嵌入式产品不断渗....
发表于 2021-01-01 09:32? 117次阅读
嵌入式开发的现状及未来趋势分析

解析嵌入式技术和物联网的发展趋势

2020年伊始,一场突如其来的新冠疫情爆发,让人们生产和生活方式发生了巨大的变化,催生远程办公、智能....
发表于 2021-01-01 09:21? 216次阅读
解析嵌入式技术和物联网的发展趋势

解析嵌入式性能面临的挑战

由于工艺节点从云端拓展到互联网边缘与端点,高端嵌入式应用也随之发生转变。性能需求迅速演进,并改变了处....
发表于 2021-01-01 09:20? 39次阅读
解析嵌入式性能面临的挑战

浅析嵌入式Linux学习的八大步骤

嵌入式Linux要学哪些?一些人总在寻思,怕走了弯路,又怕学的东西离企业需求远。那么今天就请华清远见....
发表于 2021-01-01 09:19? 64次阅读
浅析嵌入式Linux学习的八大步骤

浅析国内嵌入式存储芯片行业现状

2014年,中国成立了集成电路产业投资基金(简称“大基金”)一期,募集资金1387亿元人民币;201....
发表于 2021-01-01 09:14? 526次阅读
浅析国内嵌入式存储芯片行业现状

国内高校纷纷开设“嵌入式系统”相关课程

嵌入式技术是20世纪计算机技术发展的一个重要标志,有着广阔的市场发展空间。嵌入式系统已广泛深入到军事....
发表于 2021-01-01 09:10? 67次阅读
国内高校纷纷开设“嵌入式系统”相关课程

解析实时嵌入式系统的安全隐患

实时嵌入式系统是嵌入式系统的一个重要分支,它具有时间计算精度高、时间行为可预测及截止时限严苛等特点,....
发表于 2021-01-01 09:04? 125次阅读
解析实时嵌入式系统的安全隐患

以软件加值硬件 嵌入式创新引领AIoT新未来

更高阶AI 技术的加入,让实现“万物智联化”被添加到企业的愿望清单中。
发表于 2020-12-31 16:36? 141次阅读
以软件加值硬件 嵌入式创新引领AIoT新未来

研华:矗立机遇风口,引领AIoT新未来

顾名思义,AIoT 的实质就是AI 技术和IoT 技术的融合,新的技术往往可以将产业发展推向新高度,....
发表于 2020-12-31 16:14? 252次阅读
研华:矗立机遇风口,引领AIoT新未来

基于数字信号处理器实现雷达信号处理系统的设计

FFT是雷达信号处理的重要工具。DSP内部的硬件乘法器、地址产生器(反转寻址)和多处理内核,保证DS....
发表于 2020-12-31 10:26? 185次阅读
基于数字信号处理器实现雷达信号处理系统的设计

嵌入式开发学习路线图

基础学习Ⅰ---Linux入门       目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开...
发表于 2020-12-31 09:47? 202次阅读
嵌入式开发学习路线图

国芯科技拟募资6亿元用于SoC芯片等项目

招股说明书显示,国芯科技是一家聚焦于国产自主可控嵌入式CPU技术研发和产业化应用的芯片设计公司。公司....
发表于 2020-12-31 09:28? 288次阅读
国芯科技拟募资6亿元用于SoC芯片等项目

如何在OKMX8MM-C这一Arm64平台上搭建TengineAI推理框架

基于飞凌嵌入式 NXP i.MX8MMini开发板试用体验-运行tengine...
发表于 2020-12-31 07:42? 0次阅读
如何在OKMX8MM-C这一Arm64平台上搭建TengineAI推理框架

12个常见的C语言面试题

12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存...
发表于 2020-12-31 06:36? 0次阅读
12个常见的C语言面试题

飞腾公布下一代服务器CPU和嵌入式CPU规划

2020年12月29日,天津飞腾信息技术有限公司(以下简称“飞腾公司”)在天津举办了2020飞腾生态....
发表于 2020-12-30 15:21? 476次阅读
飞腾公布下一代服务器CPU和嵌入式CPU规划

腾锐D系列首款产品“腾锐2000”发布,完整支持...

今年7月份,国产CPU处理器厂商飞腾宣布了全新的产品线组合,包括面向服务器的腾云S系列、面向桌面的腾....
发表于 2020-12-30 14:46? 305次阅读
腾锐D系列首款产品“腾锐2000”发布,完整支持...

嵌入式入门,该如何学习

入门了嵌入式软件开发,该在哪里找学习资料原理等等,比如(网课什么的)。 公司主要用到STM的板子 ...
发表于 2020-12-30 11:13? 139次阅读
嵌入式入门,该如何学习

各种编程语言的能耗对比

? 上次跟大家分享了即将淘汰的编程语言,看来大家对于编程语言的好坏,都很有自己的见解啊。 但我们一直....
发表于 2020-12-30 10:27? 138次阅读
各种编程语言的能耗对比

GitHub 40K Star工程师求职记分享

? 本文作者是牛客网知名大佬 CyC2018,在他的 GitHub 有一个高达 40K Star 的....
发表于 2020-12-30 10:15? 171次阅读
GitHub 40K Star工程师求职记分享

基于音频编解码芯片UDA1341TS和IIS总线...

近几年,语音系统广泛应用于嵌入式数字音频产品,在MP3、手机等消费类电子产品中,人们对于这些个人终端....
发表于 2020-12-30 10:08? 494次阅读
基于音频编解码芯片UDA1341TS和IIS总线...

前ARM工程师批评:RISC-V不完美之处

? 前言 本文最初完成于几年之前,彼时作者正在 ARM 公司担任执行核心验证工程师职位。作者当时的工....
发表于 2020-12-30 09:49? 267次阅读
前ARM工程师批评:RISC-V不完美之处

PCB板基础知识、布局原则、布线技巧、设计规则

一、PCB板的元素1、  工作层面对于印制电路板来说,工作层面可以分为6大类,信号层 (signal layer)内...
发表于 2020-12-30 09:38? 248次阅读
PCB板基础知识、布局原则、布线技巧、设计规则

音频编解码器的作用以及选择时应考虑的主要特点以及...

在嵌入式系统中,越来越需要提供高保真音频而不是蜂鸣器来实现用户反馈,包括报警和警报。虽然过去哔哔声或....
发表于 2020-12-30 09:28? 276次阅读
音频编解码器的作用以及选择时应考虑的主要特点以及...

江波龙FORESEE ePOP:一款小身板、大能...

对嵌入式存储产品来说,更轻薄的设计、更高的性能、更大的容量、更低的功耗,无疑都是未来的发展趋势。在迎....
发表于 2020-12-29 11:21? 250次阅读
江波龙FORESEE ePOP:一款小身板、大能...

MPC8260和PLX9656组成的嵌入式系统的...

由MPC8260和PLX9656构成的嵌入式系统有着广阔的应用前景。可应用于高性能通信系统中的WAN....
发表于 2020-12-29 10:36? 212次阅读
MPC8260和PLX9656组成的嵌入式系统的...

基于嵌入式操作系统uClinux实现网络安全加密...

智能卡安全体系包括3部分:安全状态、安全属性以及安全机制。安全状态是指智能卡当前所处的安全级别,即当....
发表于 2020-12-29 10:19? 727次阅读
基于嵌入式操作系统uClinux实现网络安全加密...

几种ARM编译器及IDE开发环境

ARM应用软件的开发工具根据功能的不同,分别有编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函...
发表于 2020-12-29 09:31? 237次阅读
几种ARM编译器及IDE开发环境

QtE4.7编译器的安装和编译

QtE4.7 编译器的安装 QtE4.7 的编译
发表于 2020-12-29 08:00? 0次阅读
QtE4.7编译器的安装和编译

基于NXP iMX6Q ARM处理器的Apalis iMX6Q ARM嵌入式平台

随着处理器性能的提升,嵌入式设备在安全,机器视觉等方面的应用也越来越广发,本文就基于NXP iMX6 处理器演示多...
发表于 2020-12-29 07:02? 0次阅读
基于NXP iMX6Q ARM处理器的Apalis iMX6Q ARM嵌入式平台

435工业现场综合数据采集嵌入式计算机

据采集嵌入式计算机学习资料保存:435-工业现场综合数据采集嵌入式计算机 ...
发表于 2020-12-29 06:25? 0次阅读
435工业现场综合数据采集嵌入式计算机

关于工控主板的使用寿命,它会受到哪些因素的影响

工控主板是应用于工业场合的主板,被工业电脑所采用,根据需求可以适应宽温环境,可以适应恶劣环境,可以长....
发表于 2020-12-28 13:45? 25次阅读
关于工控主板的使用寿命,它会受到哪些因素的影响

如何提高我国少儿教育质量,少儿编程教育有大优势

“在我们身处的这个世界里,从城市交通、桥梁结构到空气质量、地质演变,再到人际互动和经济活动,无不可以....
发表于 2020-12-28 11:35? 94次阅读
如何提高我国少儿教育质量,少儿编程教育有大优势

关于risc-v启动部分的思考

关于risc-v启动部分思考 1.本文说明 1.1 risc-v的诞生的时代背景 1.2 发展现状 ....
发表于 2020-12-28 10:25? 249次阅读
关于risc-v启动部分的思考

嵌入式系统裸机编程的内存管理简介

? 在嵌入式裸机编程中,作为一名初级的CODER。经常要与CPU、内存等打交道。CPU作为系统的动力....
发表于 2020-12-28 09:44? 187次阅读
嵌入式系统裸机编程的内存管理简介

嵌入式移动数据库的结构体系特点及优化查询方法研究

移动数据库的应用大多嵌入到诸如掌上电脑、PDA等移动通信设备中,属于移动环境下的分布式数据库。
发表于 2020-12-27 10:13? 333次阅读
嵌入式移动数据库的结构体系特点及优化查询方法研究

C语言和C++的特点与用法详细说明

本文档的主要内容详细介绍的是C语言和C++的特点与用法详细说明。
发表于 2020-12-26 10:58? 144次阅读
C语言和C++的特点与用法详细说明

C和汇编如何互相调用?

一、gcc 内联汇编 内联汇编即在C中直接使用汇编语句进行编程,使程序可以在C程序中实现C语言不能完....
发表于 2020-12-25 15:50? 202次阅读
C和汇编如何互相调用?

嵌入式人才的培育问题被推到了台前

近期,“2020年第三届全国大学生嵌入式芯片与系统设计竞赛暨第五届智能互联创新大赛”总决赛在南京圆满....
发表于 2020-12-25 13:51? 317次阅读
嵌入式人才的培育问题被推到了台前

Python 并非最好的编程语言,它无法取代 C...

? ? 自从 20 世纪 90 年代初发布以来,Python 一直相当火爆,在这二十多年里,它的流行....
发表于 2020-12-24 17:38? 321次阅读
Python 并非最好的编程语言,它无法取代 C...

ARMv8和AArch64硬件架构的物联网板卡和...

文章提供了用C++17/2x0构建现代并行代码的实用指南、技巧和教程。它们使用CL/SYCL编程模型....
发表于 2020-12-24 17:26? 440次阅读
ARMv8和AArch64硬件架构的物联网板卡和...

C语言是如何实现面向对象的

? ? 不知道有多少人去了解过语言的发展史,早期C语言的语法功能其实比较简单。随着应用需求和场景的变....
发表于 2020-12-24 17:08? 200次阅读
C语言是如何实现面向对象的

如何用C语言验证“6174数学黑洞之谜”

? 6174数学黑洞,即卡普雷卡尔(Kaprekar)常数。 ? 任选4个不完全相同的数字(像111....
发表于 2020-12-24 16:37? 186次阅读
如何用C语言验证“6174数学黑洞之谜”

嵌入式系统编程如何实现性能优化

? ? 在C语言中,宏是产生内嵌代码的唯一方法。 对于嵌入式系统而言,为了能达到性能要求, 宏是一种....
发表于 2020-12-24 16:34? 200次阅读
嵌入式系统编程如何实现性能优化

一些常见的C语言字符串操作

? #字符串倒序输出 实现逻辑,通过strlen获取字符串长度,然后通过 len/2 进行交叉赋值,....
发表于 2020-12-24 16:31? 183次阅读
一些常见的C语言字符串操作

一位应届生的2020年嵌入式软件秋招经验

? 乐鑫科技(提前批) 选择填空60/编程40,基础题不难,编程题两道算法。 ? 联发科(提前批) ....
发表于 2020-12-24 16:25? 199次阅读
一位应届生的2020年嵌入式软件秋招经验

未来20年内最终会消失的5种编程语言

? 为了办公便捷和效率提升,新的编程语言如雨后春笋般出现,但只有少数编程语言才能成为新宠。 这种进步....
发表于 2020-12-24 16:16? 160次阅读
未来20年内最终会消失的5种编程语言

C语言:结构体、联合体嵌套使用的实用操作

? 结构体、联合体是C语言中的构造类型,结构体我们平时应该都用得很多。但是,对于联合体,一些初学的朋....
发表于 2020-12-24 16:07? 222次阅读
C语言:结构体、联合体嵌套使用的实用操作

曙光4000A大规模机群监控系统的功能特点及应用...

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、....
发表于 2020-12-24 10:30? 216次阅读
曙光4000A大规模机群监控系统的功能特点及应用...

4D Systems的pixxiLCD图形显示器...

4D Systems的pixxiLCD图形显示器是易于集成的理想解决方案,可快速、经济高效地推向市场....
发表于 2020-12-23 15:00? 246次阅读
4D Systems的pixxiLCD图形显示器...

基于LPC2138芯片和LP02138 SOC实...

本文设计的开关量信号采集模板是一款嵌入式SCADA系统的一种插件,称为智能数字量采集板(Intell....
发表于 2020-12-23 10:12? 274次阅读
基于LPC2138芯片和LP02138 SOC实...
综合在线 日韩欧美 中文字幕_综合在线 日韩欧美 中文字幕精品视频 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>