c - 如何初始化具有可变索引的结构数组

标签 c arrays struct

我有如下结构

typedef struct
{
    int a;
    int b;
    int c;
} my_struct;

在另一个文件中,我已经声明了这个 my_struct 类型的变量,如下所示。

my_struct strct_arr[MAX];

MAX 是一个宏,它是一个可配置的值,是 18 的倍数(18 或 36 或 54 等等......它可能达到 18*n 次)。

我必须用 {0xff,0,0} 初始化结构。那么,如何使用我的初始值初始化整个结构数组my_struct strct_arr[MAX];而不使用任何类型的循环。

我期待如下输出:

my_struct strct_arr[MAX]={
    {0xff,0,0},
    {0xff,0,0},
    {0xff,0,0},
    {0xff,0,0},
    …
};

但是不知道MAX值,如何初始化呢?

最佳答案

有 GCC 扩展。试试这个

#define MAX 18
my_struct strct_arr[MAX]={ [0 ... (MAX - 1)] = {0xff,0,0}};

检查 https://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/Designated-Inits.html

关于c - 如何初始化具有可变索引的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24277084/

相关文章:

c - 具有良好字符串操作支持的可嵌入语言

java - 在 Java 中将数组排序为第二个数组

c - 在头文件中为 'error dereferencing pointer to incomplete type' 在 c 中定义结构的替代方法

c - 结构、指针和改变它们

c - 在C程序中,如何检查输入字符串是否是特定名称?

c - 指针之间的数据

c - 为什么我不能直接在 C 中将数组分配给指针?

c# - 我最快什么时候可以关闭窗口?

将 C 代码编译为静态库以在 iPhone 应用程序中使用?

python - 如何将 float 组更改为字符串数组,然后保存到txt