Все еще проблемы с LLIST * mylist [x] - PullRequest
0 голосов
/ 23 января 2010

Итак, у меня есть ...

int x; LLIST * mylist [x]; х = 10; bzero (mylist, sizeof (LLIST *) * x);

это не похоже на правильное решение ..

Я добавил -std = c99 в мой make-файл, только это само по себе не сработало, поэтому Эмиль предложил вышеупомянутый подход, потому что я изначально:

int x = 10;

LLIST * mylist [x] = {NULL};

Мой make-файл выглядит так:

CC = gcc CFLAGS = -Wall -g -std = c99

LIBS = -lreadline -lm OBJS = llist.o myprogram.o INCLUDES = llist.h

все: $ (OBJS) $ (CC) $ (CFLAGS) $ (OBJS) $ (LIBS) -o myprogram

.c.o: $ .h $ (ВКЛЮЧАЕТ) $ (CC) $ (CFLAGS) -c $ .c

clean: rm -f * .o myprogram

1 Ответ

0 голосов
/ 23 января 2010

Этот код:

int x; 
LLIST *mylist[x];
x = 10;
bzero(mylist, sizeof(LLIST *)*y);

имеет две проблемы:

  1. Вы используете x строку 2, прежде чем присвоить ей значение в строке 3.
  2. Вы используете переменную y в строке 4.

Я рекомендую изменения буксировки. Сначала объедините определение и инициализацию x в одну строку. Во-вторых, используйте sizeof(VAR), а не пересчитывайте размер в зависимости от типа:

int x = 10;
LLIST *mylist[x];
bzero(mylist, sizeof(mylist));
...