【发布时间】:2019-11-20 07:29:30
【问题描述】:
我正在尝试对微控制器进行编程,使其能够与使用 SPI 的外部闪存芯片进行通信。操作码(操作码)后跟地址字节,然后是数据字节,必须按顺序发送。 而不是每次为不同的命令定义这些字节,我想创建一个保持这个特定顺序的结构。我也想改变结构内的整个数组。
我尝试创建具有三个成员的结构,如操作码、地址和数据。
void main (void)
{
//Defining Structure
struct Command_order {
unsigned char opcode;
unsigned char address[3];
unsigned char data[5];
};
while(1)
{
struct Command_order temp = {0x02, {0x00,0x17,0x00} , {0x01,0x02,0x03,0x04,0x05}}; //Initialization of structure
temp.address = {0x1F,0x03,0xC2}; //Trying to change only address
}
}
但是这行不通,是我的结构想法错误还是语法错误。我是这个概念的新手。
【问题讨论】:
-
要么一次设置一个数组单元格,要么使用填充/复制方法,如
memcpy。在 C 中,数组不是可修改的左值。它们不能像您所做的那样出现在赋值操作的左侧。
标签: c arrays struct memcpy compound-literals