我要初始化指針參數的鏈接列表,像這樣:在va_arg使用指針
/*
* Initialize a linked list using variadic arguments
* Returns the number of structures initialized
*/
int init_structures(struct structure *first, ...)
{
struct structure *s;
unsigned int count = 0;
va_list va;
va_start(va, first);
for (s = first; s != NULL; s = va_arg(va, (struct structure *))) {
if ((s = malloc(sizeof(struct structure))) == NULL) {
perror("malloc");
exit(EXIT_FAILURE);
}
count++;
}
va_end(va);
return count;
}
的問題是,鐺錯誤type name requires a specifier or qualifier
在va_arg(va, (struct structure *))
,並說該類型說明符默認爲int。它還注意到在(struct structure *)
和struct structure *
處實例化的形式。這,似乎分配給s
的是int (struct structure *)
。
它編譯罰款時,括號從(struct structure *)
刪除,但都應該被初始化結構是無法訪問。
爲什麼int
假設當括號裏傳遞給va_arg的類型參數?我怎樣才能解決這個問題?
'va_arg'必須是一個宏。 – 2010-05-16 22:13:41