C:如何为我的类型化结构赋值?

标签 c struct types variable-assignment

已关注 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/

相关文章:

types - 了解类型归属问题

struct - 在 Julia 中实现相互嵌套结构的问题

c - 在 OpenMP 的 C 语言中使函数线程安全

c - 使用派生类型进行 MPI 收集后的垃圾输出

types - 是否可以为命名类型/结构定义相等性?

c - 如何在 C 中使用结构体和指针的指针中的索引

c# - 如何从 Type.GUID 创建对象

c - 枚举如何处理未定义的值?

c - 如何将 "const char * "的内容写入文本文件?

c 在另一个c文件中定义结构