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 } };