【发布时间】:2020-02-05 20:54:58
【问题描述】:
我正在尝试将双指针传递给变量参数函数,以便我可以在其中存储一个字符串(在我的示例中为“hello world”),然后从我的主函数中打印它,但它不起作用。
#include <stdio.h>
#include <stdarg.h>
void get_value(const char *str,...) {
va_list valist;
/* initialize valist for num number of arguments */
va_start(valist, str);
/* access all the arguments assigned to valist */
void *p;
p = va_arg(valist, void*);
char *tmp = strdup("hello world");
*(const char**)p = tmp;
/* clean memory reserved for valist */
va_end(valist);
}
int main() {
const char *t;
get_value("first", &t);
printf("%s\n", t);
}
我尝试关注 lib sd-bus 的实现,因为它在那里被大量使用,但到目前为止我还没有能够解决这个问题。
我的目标是使用它来模拟我的单元测试的 sd 总线方法。
【问题讨论】:
-
Not working 确实不是对问题所在的技术解释。程序员应该能够做得比这更好。