[STM32L0] 如何访问结构体中的数组?

[复制链接]
456|7
WHALEE 发表于 2025-9-4 23:00 | 显示全部楼层 |阅读模式
我不明白为什么STM32CubeIDE会报这个语法错误。
typedef struct{
uint8_t data[10];
uint8_t time[10];
uint8_t description[10];
} FileString;


FileString Datalogger_FileString;

Datalogger_FileString.data[0]=0; //ERROR: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token

应该怎么做才能访问结构体中的数组?

flycamelaaa 发表于 2025-9-5 15:57 | 显示全部楼层
推荐在函数内部赋值。
jcky001 发表于 2025-9-5 16:57 | 显示全部楼层
如果赋值是固定的初始值,可以在定义时直接初始化。
onlycook 发表于 2025-9-5 18:58 | 显示全部楼层
用 memset 初始化,在运行时动态清零结构体。
powerantone 发表于 2025-9-5 17:38 | 显示全部楼层
全局作用域只能包含 声明 和 定义,不能包含可执行代码如赋值、函数调用。
DKENNY 发表于 2025-9-5 15:59 | 显示全部楼层
你的赋值语句放在了函数外?

把代码放到函数里面赋值。
  1. void some_function(void)
  2. {
  3.     Datalogger_FileString.data[0] = 0;
  4. }


或者这么写:
  1. FileString Datalogger_FileString = {
  2.     .data = {0},
  3.     .time = {0},
  4.     .description = {0}
  5. };


stormwind123 发表于 2025-9-5 22:59 | 显示全部楼层
编译器在解析全局作用域时,期望看到的是变量、函数、结构体的声明,而不是逻辑操作。
七毛钱 发表于 2025-9-5 21:00 | 显示全部楼层
不要在全局作用域直接写 Datalogger_FileString.data[0] = 0;。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部