我想在一个函数中使用两次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