3
私はvarargs
を一度に複数のポインタを解放する機能にしたいと思っています。主にコードをクリーンアップします。だから私は持っている:最初の引数のない可変引数 - va_startに属するもの?
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, ?????)
?
これは技術的な制限ですか、単に実装されていないものですか? (ここで私は単にそれがどのように動作するのか興味があります) –
それは動作する方法です。そうでなければそれを実装することは不可能です。少なくとも私はそれがそうであると思う。 –
@TomášZato、それは標準IMOの監督です。その余分な引数は、スタックフレームへのフックです。理論的には、それなしで達成することができます。 – StoryTeller