Ну, у них есть проблема, инициализирующая структуры глобального определенного типа.C Инициализация заданных указателей структуры структуры
typedefined является:
typedef struct {
pthread_t pthread;
int status;
int id;
time_t entrada;
} Cliente;
И глобальная декларация им с помощью это:
Cliente *cola=malloc(sizeof(Cliente));
но компилятор говорит, что это должно быть определено одним CONSTANT
Цель СССР является иметь динамический массив типа Cliente с именем cola. Если я не инициализирую их хорошо, я получаю ошибку сегментации в 0.00s исполнения. Причина того, что это глобальная переменная, потому что это ресурс, общий для потоков, я знаю, что это не лучшая практика, но я должен действовать так.
Я не знаю, сколько у меня было бы Cliente (может быть номер по умолчанию или один случайный ввод argv), поэтому я применил и указатель структуры.
Заранее спасибо :)
Поскольку инициализатор не является постоянным выражением, вы должны выполнить инициализацию внутри функции. –
Tom Karzes, но как инициализировать указатель структуры массива, если я точно не знаю, сколько членов мне нужно в нем? –
Ну в вашем примере кода вы пытаетесь выделить место для одного. Вы можете, конечно, сделать то же самое изнутри функции. Но если на самом деле вы хотите сделать что-то отличное от того, что находится в вашем примере, просто подождите, пока вы не узнаете, сколько вы хотите, а затем выделите его как массив. Если это значение изменяется, вы можете использовать 'realloc' для увеличения размера массива. –