c - 按名称初始化结构的数组成员

标签 c

我有一个看起来像这样的结构:

typedef struct
{
    uint32_t a;
    uint32_t b;
    uint32_t c[5];
    uint32_t d;
} MY_STRUCT_T;

我要初始化 c ,按名称,为非零值。我希望其他一切都为 0。

c不是数组,我可以这样做:
static MY_STRUCT_T my_struct = {.b = 1}; 

我知道我可以做到这一点:
static MY_STRUCT_T my_struct = {.c[0]=5,
    .c[1]=5,
    .c[2]=5,
    .c[3]=5,
    .c[4]=5};

但我想知道是否有我不知道的更优雅的语法:
就像是:
static MY_STRUCT_T my_struct = {.c[] = {5,5,5,5,5}};

我已阅读以下内容,但他们没有回答这个问题:
Initializing a struct to 0

Initialize/reset struct to zero/null
A better way to initialize a static array member of a class in C++ ( const would be preferred though )

How to initialize all members of an array to the same value?

最佳答案

所以我写了这个问题,然后试验了一段时间,发现以下方法可行:

static MY_STRUCT_T my_struct = {.c={5,5,5,5,5}};

关于c - 按名称初始化结构的数组成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39458531/

相关文章:

常量对象的常量数组

c - C中未知数量字符串的文件IO

临界区定义

c - 结构体递归内存处理问题

c - Valgrind 检测到的 Still Reachable Leak

c - 默认情况下,赋值使整数指针不启用强制转换

C 计算器 if else

c++ - 如何在 x86 程序集中将当前线程的堆栈指针更改为新线程

c - 这些不同的 gcc 链接选项如何改变最终的可执行文件?

c - 在链表的第 n 个位置插入元素 - C