我想让varargs
函数一次释放多个指针,主要是为了清理代码。所以我有:
void free_all( ... ) {
va_list arguments;
/* Initializing arguments to store all values after last arg */
// but there are no args!
va_start ( arguments, ????? );
/* we expect the caller to send last argument as NULL **/
void* pointer = va_arg ( arguments, void* );
while( (pointer = va_arg ( arguments, void* ))!=NULL ) {
free(pointer);
}
va_end ( arguments ); // Cleans up the list
}
那么放入va_start ( arguments, ????? )
的内容是什么?
答案 0 :(得分:4)
根本不可能。你必须始终有一个非vararg论点。在你的情况下
void free_all(void *first, ...);
可行。