嵌入式Linux C(十一)——关键字

简介: 嵌入式Linux C(十一)——关键字

关键字


1. register关键字


寄存器变量

使用:只能修饰局部变量,不能修饰函数

寄存器变量:有可能保存在CPU的寄存器,省去CPU从内存中获取数据的时间,从而提高运行效率

使用场景:频繁被访问的变量,用register修饰可以起到优化程序运行效率的效果

使用注意事项:1.不能通过&来获取register修饰变量的地址 2.register修饰的变量类型一定是CPU所需处理的类型;


CPU:

运算器、控制器、存储器(寄存器)


volatile关键字


异变的

使用场景:修饰全局变量


volatile int count = 5;//防止编译器优化   
while(i == 5)
{
    printf("asasx");
}


2. static关键字


既能修饰局部变量,也能修饰全局变量,还能修饰函数

只执行一次

修饰局部变量:延长局部变量的生命周期,直至整个程序结束之后再释放

修饰全局变量:限定作用域,只能在本文件访问,不能再其他文件访问

修饰函数:与全局变量一样,限定作用域,只能在本文件访问,不能再其他文件访问

static修饰的函数一定要放在最前面(???)


//static使用场景
局部变量场景:替代全局变量(全局变量为先)
全局变量和函数:多人协作时,防止命名冲突(全局变量名、函数名)(自己用的函数,一定加上static)


3. const关键字


不修饰函数

const:修饰变量(局部、全局)

const:修饰变量,只读变量

const:距离谁近,谁就不能变

const使用场景:修饰函数的形参,提供安全访问的接口函数,防止函数实现过程中修改实参变量的值


const int num = 5
//对应的内存空间是可变的,但是不能通过变量名来修改
 int const*p = &count;  //不能通过p来修改p指向的内存空间
 int * const p = &count; //不能通过p来修改p指向的内存空间
const int *p = &count;   //不能通过p来修改p对应的内存空间
const int const *p = &count;   //不能通过p来修改p指向的内存空间和对应的内存空间


4. extern关键字


在当前文件中访问其他文件定义的全局变量或者函数:extern 外部声明


5. typedef关键字


typedef:给数据类型命名

作用:提高代码的移植性,可读性,编写效率

置换函数指针


typedef int (*P_FUNC)(int,int);
int add(int a,int b)
{
  return a+b;
}
int (*p_func)(int,int) = add;//
//P_FUNC p_func = add
//typedef VS define

1. define不能定义复杂得类型(函数指针变量)typedef可以

2. #define预处理阶段做傻瓜式替换,存在风险(不做语法检查),不安全


//#define VS const
定义常量:define更好


6. inline关键字


相关文章
|
6月前
|
消息中间件 存储 缓存
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
127 1
|
6月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
172 1
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
105 3
|
4月前
|
传感器 人工智能 网络协议
:嵌入式 Linux 及其用途
【8月更文挑战第24天】
196 0
|
5月前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
**嵌入式Linux学习误区摘要** 1. **过度聚焦桌面Linux** - 许多学习者误将大量时间用于精通桌面Linux系统(如RedHat、Fedora、Ubuntu),认为这是嵌入式Linux开发的基石。 - 实际上,桌面Linux仅作为开发工具和环境,目标不应是成为Linux服务器专家,而应专注于嵌入式开发工具和流程。 2. **盲目阅读Linux内核源码** - 初学者在不了解Linux基本知识时试图直接研读内核源码,这往往导致困惑和挫败感。 - 在具备一定嵌入式Linux开发经验后再有针对性地阅读源码,才能有效提升技能。
|
6月前
|
物联网 Linux 芯片
学习嵌入式是选择单片机还是Linux?
单片机通常指的是一种集成了处理器、存储器和各种外设接口的微控制器芯片,常见的有STC、51系列、AVR、ARM Cortex-M等。单片机具有低成本、低功耗、实时性强等特点,适用于对资源要求较低、功耗要求较低、实时性要求较高的嵌入式系统。学习单片机开发可以让您深入了解嵌入式系统的底层原理和硬件编程,对于对嵌入式系统底层开发感兴趣的人来说,是一个很好的选择。
139 4
|
6月前
|
消息中间件 安全 Java
【嵌入式软件工程师面经】Linux多进程与多线程
【嵌入式软件工程师面经】Linux多进程与多线程
71 1
|
6月前
|
存储 缓存 Unix
【嵌入式软件工程师面经】Linux文件IO
【嵌入式软件工程师面经】Linux文件IO
50 1
|
7月前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
该文指出了学习嵌入式Linux开发的两个常见误区。一是过分专注于学习桌面或服务器版Linux,而非关注嵌入式开发本身,实际上只需熟悉基本操作即可。二是试图在没有基础的情况下直接阅读Linux内核源代码,这是不切实际的,应先建立基础知识再进行源码学习。文章还提到了在嵌入式系统中获取和处理屏幕数据的示例,包括使用gsnap工具将framebuffer数据转为图像,以及涉及的交叉编译过程。
|
7月前
|
Linux 编译器 测试技术
嵌入式 Linux 下的 LVGL 移植
嵌入式 Linux 下的 LVGL 移植
242 0