嵌入式C知识点总结

在网上看到很多嵌入式C的知识点,总想把他们积累起来。所谓不积小流无以成江海,不积跬步无以至千里。

1、#define SENCONDS_PER_YEAR (60*60*24*365)UL

1)宏定义语法,格式

2)直观表达出这个数字的意义(一年又多少秒)

3)这个数字会使16位机产生溢出,需要使用长整形L,同时是无符号数,所以用到UL

 

2、#define MIN(A,B) ((A)<=(B)?(A)(B))

1)三重条件操作符,会使编译器产生比if-than-else更优化的代码 注意inline也是可以产生嵌入式代码的

2)宏中的参数需要使用括号括起来

3)leaset = MIN(*P++,a); 这个语句会产生什么错误?

++ 的操作优先级高于*,所以会先地址++,然后取值,会得到不确定的结果。

 

3、预处理器表示 #error的目的是什么

1)使用范围很广,在预处理阶段,当处理到这里时,会产生预处理错误,并输出自定义错误。

# error [用户自定义的错误消息]

比如说,如果检测到编译环境是C++提醒用户,需要在C编译环境下运行。

 

4、死循环(Infinite loops)

自己习惯使用 while(1){},结构看起来一目了然。并且可以定义一个变量=1,变量名可以写成某种死循环运行条件,这样做可以一眼看出这个循环目的。

当然有些人喜欢 for(;;){},并没有任何问题。

 

5、变量定义

a) 一个整型数                           (An integer)
b) 一个指向整型数的指针        (A pointer to an integer)
c) 一个指向指针的的指针,它指向的指针是指向一个整型数                  (A pointer to a pointer to an integer)
d) 一个有10个整型数的数组                                                                    (An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的                       (An array of 10 pointers to integers)
f) 一个指向有10个整型数数组的指针                                                      (A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数                                          (A pointer to a function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )

 

答案:

a) int_t a;

b) int_t *a;

c) int_t **a;

d) int_t  a[10];

e) int_t *a[10];

f) int_t (*a)[10};

g) int_t (*a)(int_t);

h) int_t(*a[10])(int_t);

6、static 作用

1)static变量和函数存储在静态存储区域,在程序开始时被初始化。唯一的一次初始化。静态变量的值是可以变化的。地址是开始时初始化的。

2)静态变量和静态函数只能被模块内的函数调用,模块外的无法调用

嵌入式C知识点总结,布布扣,bubuko.com

时间: 2024-12-26 09:32:14

嵌入式C知识点总结的相关文章

嵌入式开发知识点总结

offsetof和container_of宏 offsetof宏的作用:计算结构体中某个元素相对结构体首地址的偏移量 container_of宏的作用:知道结构体变量中某个成员的指针,反推这个结构体变量的指针 #include <stdio.h> #define offsetof(type,member) ((int) &((type *)0)->member) #define container_of(ptr,type,member) ({ const typeof(((typ

常问易混淆知识点(嵌入式)

b 一.知识点1 a) 关键字volatile在编译时有什么含义?并给出三个不同使用场景的例子(可以伪代码或者文字描述).b) C语言中static关键字的具体作用有哪些 ?c) 请问下面三种变量声明有何区别?请给出具体含义int const *p;int* const p;int const* const p; a) 用volatile关键字定义变量,相当于告诉编译器,这个变量的值会随时发生变化,每次使用时都需要去内存里 重新读取它的值,并不要随意针对它作优化. 建议使用volatile变量的

痞子衡嵌入式:嵌入式从业者应知应会知识点 - 索引

大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是嵌入式从业者应知应会知识点. 本系列文章会逐一介绍嵌入式开发者应该懂的那些知识点: 计算机原理篇(持续更新中...1/2) 不可不知的计算机原理知识(1)- 整数表示(原码,反码,补码) 不可不知的计算机原理知识(2)- 浮点数表示 数据差错控制篇(持续更新中...3/6) 常用的数据差错控制技术(1)- 重复校验(Repetition Code) 常用的数据差错控制技术(2)- 奇偶校验(Parity Check) 常用的数据差

新手学习嵌入式需要掌握的几点知识点

从事嵌入式开发十年了,有些感想写出来,一则鞭策自己,让自己看到自己的不足,认清以后的发展方向,二则深知很多朋友会像我当初一样,为不知道储备什么知识而苦恼,所以写点东西给这些朋友们提供参考.一些浅见.这里觉得有帮助或者还在迷茫的朋友可以留下企鹅.首先,IT是一个需要不断学习的行业,没有任何一个行业像我们这样需要不断地接触新东西,学习新知识,如同<学计算机的你伤不起呀>中吼的那样,搞上层开发的,各种编程语言:搞系统开发的,各种系统:做底层的,各种汇编,芯片,指令集:当然了,无论做哪层,各种编译器,

嵌入式project师考试知识点总结 微内核结构

在操作系统的结构设计中,微内核结构表示的是 A)  总体式结构 B)  层次结构 C)  分布式结构 D)  客户机/server结构 微内核是指把操作系统结构中的内存管理.设备管理.文件系统等高级服务功能尽可能地从内核中分离出来.变成几个独立的非内核模块,而在内核仅仅保留少量最主要的功能,使内核变得简洁可靠.因此叫微内核. 微内核实现的基础是操作系统理论层面的逻辑功能划分. 几大功能模块在理论上是相互独立的,形成比較明显的界限,其长处例如以下: · 充分的模块化,可独立更换任一模块而不会影响其

嵌入式工程师考试知识点总结 微内核结构

在操作系统的结构设计中,微内核结构表示的是 A)  整体式结构 B)  层次结构 C)  分布式结构 D)  客户机/服务器结构 微内核是指把操作系统结构中的内存管理.设备管理.文件系统等高级服务功能尽可能地从内核中分离出来,变成几个独立的非内核模块,而在内核只保留少量最基本的功能,使内核变得简洁可靠,因此叫微内核. 微内核实现的基础是操作系统理论层面的逻辑功能划分.几大功能模块在理论上是相互独立的,形成比较明显的界限,其优点如下: · 充分的模块化,可独立更换任一模块而不会影响其他模块,从而方

关于嵌入式如何学习(看了不后悔,给学技术的同行一条光明的路)

关于嵌入式如何学习,我相信有很多大牛回答得很专业,最近在知乎上看到一网名为----李brooks,~的网友对此进行了总结,我个人觉得非常好,还有其他两位网友li crifan和Tony Ho,毕竟我工作以来也还有好多东西没有接触,就有他说的那些中的部分内容,我们来看看他们说了什么内容: 有一位大学生四年级的网友提出这样的问题: 本人大四学生,专业为电气类的,有C语言,单片机,模电,数电的基础,一直想从事嵌入式方面的工作(感兴趣),但是以目前的水平,暂时还不能找到这方面的工作,所以一直在纠结是先找

2014025689 《嵌入式系统程序设计》第五周学习总结

<嵌入式系统程序设计>第五周学习总结 一.6.5(标准I/O编程)主要涉及的函数及知识点 标准的I/O的三种缓冲存储:全缓冲.行缓冲.不带缓冲. 1. 全缓存:当填满标准I/O缓存后才进行实际的I/O操作 2. 行缓存:当输入或输出中遇到行结束符时,标准I/O库执行I/O操作 3. 不带缓存:标准I/O库不对字符进行缓冲 打开文件的三个标准函数:  fopen().fdopen()和 freopen(). -fopen()可以指定打开文件的路径和模式 函数原型:FILE * fopen(con

IT行业: 嵌入式工程师的进阶之路

今天我们要跟大家聊得话题并不轻松,大家看标题都知道了啊今天我们要跟大家聊一聊关于转行的问题都说隔行如隔山转行如投胎其实转行对于大多数人来说确实不是一个容易的选择,要放弃积累好几年的工作经验,投入到一个新的领域需要莫大的勇气,但是出于长远的职业规划和行业前景考虑又不得不选择一个新的领域. 那今天我们请到了我们明明可以靠脸却偏偏要靠颜值的吴建老师来跟我们讨论这个转行的因为我们今天谈论的是转行码农,其实这几年大家对于转行IT企业纷纷趋之若鹜,你觉得转行IT行业相对其他行业的一些优势在哪里呢 1.工资高