2010-01-23 43 views
0

所以我有...不過問題LLIST * MYLIST [X]

INT X; LLIST * mylist [x]; 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

.CO:$ .H $(含) $(CC) $(CFLAGS)-c $ .C

清潔:RM -f *的.o myprogram

+1

不是有效的解決方案是什麼? – Zitrax 2010-01-23 00:24:45

+0

當我嘗試 int x = 10; LLIST * mylist [x] = {NULL}; 我編譯時遇到錯誤 給出的解決方案編譯但無效。 – MRP 2010-01-23 00:28:19

回答

0

此代碼:

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

有兩個問題:

  1. 在給第3行的值之前,您正在使用x行2.
  2. 您正在使用var y第4行。

我建議兩個更改。首先將x的定義和初始化組合到一行中。其次,使用sizeof(VAR)而不是然後重新計算基於類型的大小:

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

對不起,這是一個錯字假設: bzero(mylist,sizeof(LLIST *)* x); – MRP 2010-01-23 00:36:07

+0

好的..我想我能夠得到它的工作...我會試一試謝謝你的幫助。 – MRP 2010-01-23 00:40:51