我想在一個函數中使用兩次va_list方法。我可以這樣做嗎?是否可以在函數中使用兩次va_list方法?
#include <cstdarg>
void printFDS(int num_fds, ... , const char *fmt, ...) {
va_list fds, args;
va_start(fds, num_fds);
va_start(args, fmt);
for (int i = 0; i < num_fds; i++) {
vsprintf(va_arg(fds, FILE*), fmt, args);
}
va_end(args);
va_end(fds);
}
所以我就能夠調用這樣該函數:
printFDS(1, stderr, "Error: %s\n", stderror(errno));
或 printFDS(2, stderr, otherFD, "Error: %s\n", stderror(errno));
而FILE *otherFD = fopen ("somefile", "w");
我的目的:打印信息,名單上的fd ..
謝謝
你可以通過fd的列表作爲某種類型的集合(數組,列表,集合,...) – 2013-04-10 10:26:35
爲什麼C標記時這是一個C++問題?並注意使用容器遠遠勝於va_lists。 – 2013-04-10 10:27:09
你如何設想? – 2013-04-10 10:27:44