static 修饰局部变量

图1
image

图2
image

结论:
对比图1/2watch窗口&inst5数据,图1在栈(线程,使用了rtos)中,图2在静态全局区


定义一个函数以获取、设置静态局部变量,其作用域限定于该函数,实现类似全局变量的效果,将全局变量隐藏起来

点击查看代码
//获取或设置值
//(1)形参用结构体指针,可以有效避免分配过大的栈空间导致栈溢出(结构体有可能很大)
MP *get_or_set_xxx(MP* p, int flag)
{
	static MP s_MPData;  //静态局部变量,作用域只在本函数,存储于全局数据区,内存空间较栈空间大得多

	if (flag == SET)
	{
		memcpy(&s_MPData, p, sizeof(MP));
	}
	return &s_MPData;
}

参考文章
(第2点)

posted @   我爱茜茜公主  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
历史上的今天:
2022-08-18 uart驱动框架结构体
2022-08-18 doxygen
2022-08-18 rt thread标准版的版本选择
2022-08-18 不用定时器用接收超时做超时处理
2021-08-18 关键字 volatile
2021-08-18 指针比数组效率高原因
点击右上角即可分享
微信分享提示