Могу ли я переслать все параметры функции (тот же номер, тип и порядок) в другую функцию - PullRequest
2 голосов
/ 12 апреля 2019

Я пытаюсь передать все аргументы, которые получает моя функция print(), в уже существующую функцию sprintf(), чтобы получить нужную мне строку

Мое текущее решение - передать параметры напрямуюsprintf() и получите от него str, затем отправьте его на print(), но я хочу сделать следующее:

void print("My age is %d",age){
   char str[100];
   sprintf(str,"My age is %d",age);  //pass all the parameter recived to sprintf
   //the rest of my code which will sent str to external pins of an MCU
}

1 Ответ

4 голосов
/ 12 апреля 2019

Вам нужно будет реализовать список аргументов переменной длины C с чем-то вроде:

int print(const char *format, ...)
{
    va_list arg;
    int     result;
    char   *str;

    va_start(arg, format);
    result = vasprintf(&str, format, arg);
    va_end(arg);

    /// Do something with str.

    return result;
}

Примечание: функция vasprintf() является расширением GNU и недоступна в C или POSIX. Тем не менее, он также доступен под * BSD. (Спасибо @Ctx)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...