当前位置: 首页 > article >正文

单片机中C++的局部static变量的初始化仍然遵循控制流

实验

执行如下测试代码

class Test
{
public:
	Test()
	{
		bsp::di::Console().WriteLine("构造");
	}
};

void test_func()
{
	bsp::di::Console().WriteLine("第一条语句");
	static Test test;
}

执行两次 test_func ,在串口观察输出
在这里插入图片描述

在这里插入图片描述

可以看到

static Test test;

的构造发生在

bsp::di::Console().WriteLine("第一条语句");

之后。

使用的编译器为 arm-none-eabi-g++ ,单片机为 stm32h743iit6.

结论

即使在单片机中,局部 static 变量也严格遵循控制流。也就是说可以用局部 static 来实现单例,并且在局部 static 的定义语句前面插入禁用中断,禁止任务调度等代码来保证线程安全和可重入。


http://www.kler.cn/a/600963.html

相关文章:

  • Python爬虫异常处理:自动跳过无效URL
  • 2021年蓝桥杯第十二届CC++大学B组真题及代码
  • Redisson 实现分布式锁简单解析
  • OpenCV的Python开发环境搭建(Windows)
  • 目标和力扣--494
  • Readis自动化部署
  • ReentranLock手写
  • FPGA的直方图均衡
  • Python的线程、进程与协程
  • DrissionPage打造全自动音乐推荐系统——从爬虫到机器学习
  • 团体协作项目总结Git
  • Windows环境下使用OpenSSL查看pfx证书的有效期
  • 文章内容生成大语言模型训练的qa语料集
  • 使用vector构造杨辉三角形
  • vcd波形转仿真激励
  • 银行分布式新核心的部署架构(两地三中心)
  • 桑福德·韦尔策划美国捷运公司收购南美银行案例分析
  • 光学像差的类型与消除方法
  • DeepSeek-V3 模型更新,加量不加价
  • 【WebGIS教程2】Web服务与地理空间服务解析