已关注 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 } };
关于C:如何为我的类型化结构赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48996793/