gpt4 book ai didi

c - 分配给结构数组失败,返回 "error: initializer element is not constant"

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:02 25 4
gpt4 key购买 nike

当我尝试初始化包含结构元素的全局数组时,出现“错误:初始化元素不是常量”

啊啊


#define MAX_MSG_NUM 20
#define NAME_SIZE 15
#define MAX_QUE_NUM 10

typedef struct {
int index;
int tid;
int front;
int rear;
char name[NAME_SIZE];
char msgbuf[MAX_MSG_NUM];
} THREAD;

typedef enum {
I1 = 0,
I2 = 1,
I3 = 2,
I4 = 3
} DMTHREAD;

交流


THREAD   a[MAX_MSG_NUM];
THREAD b[MAX_MSG_NUM];
THREAD c[MAX_MSG_NUM];

THREAD T[MAX_QUE_NUM] = {
{I1, 0, 0, 0, "CONFIG1", a[MAX_MSG_NUM]},
{I2, 0, 0, 0, "CONFIG2", b[MAX_MSG_NUM]},
{I3, 0, 0, 0, "CONFIG3", c[MAX_MSG_NUM]},
0
};

GCC 编译器。

bash-3.2$ gcc -g a.h a.c
a.c:8: error: initializer element is not constant
a.c:8: error: (near initialization for 'T[0].msgbuf[0]')
a.c:9: error: initializer element is not constant
a.c:9: error: (near initialization for 'T[1].msgbuf[0]')
a.c:10: error: initializer element is not constant
a.c:10: error: (near initialization for 'T[2].msgbuf[0]')

感谢您的帮助。

看到您的回答,我更改了代码,现在可以正常工作了。

MSG   T[MAX_QUE_NUM] = {
{I1, 0, 0, 0, "CONFIG1", {0}},
{I2, 0, 0, 0, "CONFIG2", {0}},
{I3, 0, 0, 0, "CONFIG3", {0}},
0,
}

感谢您的回答。

最佳答案

a[MAX_MSG_NUM] 确实是非常数。它还表示一个 Thread 实例,它恰好位于您之前定义的数组之外,并且与您应该传递给那里的类型不匹配 (char[])。

所以它在很多层面上错误的。

关于c - 分配给结构数组失败,返回 "error: initializer element is not constant",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9478451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com