C:如何为我的类型化结构赋值?
C: how do I assign values to my typed structure?
根据 jldupont's answer 定义具有不同数据的变量,我定义了以下内容:
enum buffer_format
{
FIFO_U8T = 0,
FIFO_U16T
};
struct buffer_param
{
enum buffer_format type;
union
{
struct buffer_fifo_u8_t *fifo_u8;
struct buffer_fifo_u16_t *fifo_u16;
} is;
};
然后我编写了以下作业:
struct buffer_param fifo_uartTx_param;
fifo_uartTx_param.is.fifo_u8 = &fifo_uartTx;
fifo_uartTx_param.type = FIFO_U8T;
但是,我遇到了一些错误,抱怨说我不能简单地进入我的 buffer_param 类型结构来进行这些分配。如何将指针分配给 UART fifo 并设置其类型?
error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
fifo_uartTx_param.is.fifo_u8 = &fifo_uartTx;
^
error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
fifo_uartTx_param.type = FIFO_U8T;
^
您收到错误消息是因为您试图在函数外部进行赋值。只允许带有初始值设定项的定义。
要初始化此变量,请执行以下操作:
struct buffer_param fifo_uartTx_param =
{ .type = FIFO_U8T, .is= { .fifo_u8 = &fifo_uartTx } };
根据 jldupont's answer 定义具有不同数据的变量,我定义了以下内容:
enum buffer_format
{
FIFO_U8T = 0,
FIFO_U16T
};
struct buffer_param
{
enum buffer_format type;
union
{
struct buffer_fifo_u8_t *fifo_u8;
struct buffer_fifo_u16_t *fifo_u16;
} is;
};
然后我编写了以下作业:
struct buffer_param fifo_uartTx_param;
fifo_uartTx_param.is.fifo_u8 = &fifo_uartTx;
fifo_uartTx_param.type = FIFO_U8T;
但是,我遇到了一些错误,抱怨说我不能简单地进入我的 buffer_param 类型结构来进行这些分配。如何将指针分配给 UART fifo 并设置其类型?
error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
fifo_uartTx_param.is.fifo_u8 = &fifo_uartTx;
^
error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
fifo_uartTx_param.type = FIFO_U8T;
^
您收到错误消息是因为您试图在函数外部进行赋值。只允许带有初始值设定项的定义。
要初始化此变量,请执行以下操作:
struct buffer_param fifo_uartTx_param =
{ .type = FIFO_U8T, .is= { .fifo_u8 = &fifo_uartTx } };