打印
[其他ST产品]

请问STM32 C++类构造函数怎么修改才能实现全局变量的初始化呢?

[复制链接]
118|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2024-1-5 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在STM32F10X项目中使用了C++的特性,使用arm-none-eabi-g++编译,程序可以正常运行。
问题: C++定义的全局变量,其类的构造函数不被执行,在构造函数中设置的变量值都无效(实际全部为0)。 当把全局变量改为函数内部的临时变量时,是有效的。
   猜想是因为程序写到FLASH上去了,全局变量都为0,而不考虑对应类的构造函数。
  需要怎么修改才能实现全局变量的初始化呢?

使用特权

评论回复
沙发
probedog| | 2024-1-5 15:26 | 只看该作者
使用命名空间

使用特权

评论回复
板凳
一只眠羊| | 2024-1-11 14:39 | 只看该作者
要实现全局变量的初始化,你可以在类的构造函数中进行修改。

使用特权

评论回复
地板
未说出口的像你| | 2024-1-11 17:00 | 只看该作者
在STM32的C++编程中,全局变量的初始化可以通过在构造函数中使用初始化列表来实现。

使用特权

评论回复
5
在曼谷的春| | 2024-1-11 19:00 | 只看该作者
全局变量的初始化顺序是根据它们在代码中的声明顺序确定的

使用特权

评论回复
6
我吃小朋友| | 2024-1-11 21:00 | 只看该作者
这个全局变量还用C++搞?有点迷糊啊

使用特权

评论回复
7
月亮一键变蓝| | 2024-1-11 23:00 | 只看该作者
其实楼主可以用C的方式,实现全局变量声明的吧

使用特权

评论回复
8
失物招領| | 2024-1-12 02:00 | 只看该作者
你换成C开发多好啊,而且例子还挺多

使用特权

评论回复
9
她已醉| | 2024-1-12 06:00 | 只看该作者
C和C++的全局变量声明不一样吗?

使用特权

评论回复
10
将爱藏于深海| | 2024-1-12 12:00 | 只看该作者
需要注意的是,C++中的全局变量声明和定义通常放在头文件中,并使用头文件的 include 机制在多个源文件中共享。

使用特权

评论回复
11
春日负喧| | 2024-1-12 16:00 | 只看该作者
注意一下哈,C++还引入了命名空间(namespace)的概念,可以将全局变量放在命名空间中,以避免全局变量的命名冲突

使用特权

评论回复
12
温室雏菊| | 2024-1-12 20:00 | 只看该作者
感觉C++的全局变量就多支持了,可以在函数中声明操作?不是很懂,但这种感觉容易冲突

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

376

主题

1418

帖子

1

粉丝