【发布时间】:2016-01-26 07:31:27
【问题描述】:
嗯,我在初始化全局定义的类型结构时遇到了问题。
类型定义为:
typedef struct {
pthread_t pthread;
int status;
int id;
time_t entrada;
} Cliente;
我使用的全局声明是这样的:
Cliente *cola=malloc(sizeof(Cliente));
但编译器说它必须由一个 CONSTANT 定义
目标是拥有一个名为 cola 的 Cliente 类型的动态数组。 如果我没有很好地初始化它们,我会在执行 0.00 秒时出现分段错误。 将其作为全局变量的原因是因为它是线程之间共享的资源,我知道这不是最佳实践,但我必须这样做。
我不知道我会有多少个 Cliente(可能是默认数字或一个 argv 随机输入)所以这就是我实现和结构指针的原因。
提前致谢:)
【问题讨论】:
-
由于初始化器不是常量表达式,你必须在函数中执行初始化。
-
Tom Karzes,但是如果我不知道我需要多少成员,我该如何初始化一个数组结构指针呢?
-
好吧,在您的示例代码中,您正试图为恰好一个分配空间。你当然可以在一个函数中做同样的事情。但是,如果实际上您希望做一些与您的样本不同的事情,那么只需等到您知道您想要多少,然后将其分配为一个数组。如果该值发生变化,您可以使用
realloc来增加数组的大小。
标签: c compiler-errors initialization posix