Итак, у меня есть структура typedef с именем cmd_t с элементом массива символов с именем argv. И у меня есть функция, которая принимает аргумент массива символов, и я хочу, чтобы она инициализировала структуру с массивом с теми же значениями, что и входной массив, но я обязана для этого назначения использовать strdup для копирования элементов. Пока у меня есть что-то вроде этого:
typedef struct {
char *argv[ARG_MAX+1]; //ARG_MAX being a defined constant
...
} cmd_t;
cmd_t *cmd_new(char *argv[]){
cmd_t *cmd;
for (int i = 0; i < ARG_MAX; i++){ //Last element must be NULL
cmd->argv[i] = strdup(argv[i]);
}
...
}
Хотя я получаю предупреждение, которое меня беспокоит.
warning: ‘cmd’ may be used uninitialized in this function [-Wmaybe-uninitialized]
cmd->argv[i] = strdup(argv[i]);
Я предполагаю, что мой подход довольно наивен, и если бы я мог получить несколько указателей в правильном направлении, это было бы великолепно.