嵌入式开发内存节约方法(笔记)

1. 不要在.h文件中定义变量,可以声明一个extern全局变量,定义在某一个.c文件中进行。其他.c文件即可共用。 

在源文件中引入头文件相当于直接把头文件的内容拷贝到原文件中,如果引入这个头文件后,将会在每个引入的源文件中重复定义这些变量。在C++中这样的代码是可以编译通过的,但是在C语言编译器中是不能编译通过的。

如果在头文件中定义static变量,在多个源文件中引入是可以编译通过的,因为相当于在每个源文件中定义了一个static变量,而static变量的作用域限定在这个源文件内的。
  如果在头文件中定义了const变量,在多个源文件中引入是不能编译通过的,因为const没有限定作用域,每个文件都定义这个变量,会出现重复定义的错误。

不要直接在头文件中定义const或static变量,更好的写法是在源文件中定义,在头文件中extern声明。例如:

// defs.h
extern const std::string kStr;
extern const Student kStu;
// defs.cpp
const std::string kStr = "String";
const Student kStu("Name");

2. 尽量用结构体Union

3. 分时复用

4. 位域

5. 常量用const定义,会存放道flash中而不是RAM中;宏定义常量编译期间不占内存,但每次引用会分配内存。

const  可以节省空间,避免不必要的内存分配。 例如: 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值