如何在可配置计数的静态结构数组中初始化具有特定值的成员? [复制]

Posted

技术标签:

【中文标题】如何在可配置计数的静态结构数组中初始化具有特定值的成员? [复制]【英文标题】:How to init a member with specific value in a static structure array of configurable count? [duplicate] 【发布时间】:2017-03-25 05:29:24 【问题描述】:
struct move 
int left;
int right;
int up;
int down;
;

struct move moves[CONFIG_VARIABLE_X];

移动次数数组是一个配置变量,开发者可以设置为任意值。

现在,所有的 move[x].right 都应该以值 1 初始化。 我知道我可以编写一个函数并循环遍历并用 1 初始化正确的成员,但是有没有办法在上面的定义中初始化这个特定的值?

【问题讨论】:

简短回答:不。有一些技巧可以解决这个问题:搜索例如“具有相同值的 c init 结构成员”。 作为标准 C 的特定于 GCC 的扩展,重复问题的第二个答案结合结构元素的指定初始化语法,将允许您做您想做的事。如果不使用 GCC 扩展(或其他编译器中的等效扩展),就没有办法做到这一点。 【参考方案1】:

希望对你有帮助。

#include <stdio.h>
#define MAX 8

struct move 
int left;
int right;
int up;
int down;
;

int main()

        struct move moves[MAX]=[0 ... MAX-1].right = 1;

        printf("...%d\n",moves[0].left);
        printf("...%d\n",moves[1].right);
        printf("...%d\n",moves[2].right);
        printf("...%d\n",moves[3].right);
        printf("...%d\n",moves[4].right);
        printf("...%d\n",moves[5].right);
        printf("...%d\n",moves[6].right);
        printf("...%d\n",moves[7].right);
        return 0;

【讨论】:

以上是关于如何在可配置计数的静态结构数组中初始化具有特定值的成员? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用 memset 初始化具有不同值的结构数组元素

如何提高 SQL Server 查询的性能以选择具有值的行不在子查询中的一次计数

如何找到特定成员具有特定值的第一个结构?

如何从对象数组中获取具有属性的列表,除非它包含具有特定值的另一个项目?

Julia:如何根据具有特定值的类型字段访问类型数组中的元素

如何计算MySQL JSON数组中每个值的计数?