Я пытаюсь передать двойной указатель на функцию переменного аргумента, чтобы я мог сохранить в ней строку (в моем примере «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 bus для моих юнит-тестов.