Passar uma elipse para outra função variadica [duplicado]
Esta pergunta já tem uma resposta aqui:
Encaminha uma invocação de uma função variável em C 10 respostasTenho aproximadamente 30 funções variadas. Cada um aceita um caminho como argumento final, por exemplo
bool do_foo(struct *f, int q, const char *fmt, ...)
Em cada função, tenho que verificar se o formato expandido é menor ou igual a um determinado tamanho. Então, eu me pego copiando / colando o mesmo pedaço de código para verificar quantos caracteresvsnprintf()
não imprimiu, definaerrno
em conformidade e evite a gravaçã
O que eu gostaria de fazer é escrever uma função para fazer isso, que retornaria uma string alocada estaticamente (expandida) conhecida por um tamanho seguro ou uma string recém-inicializada em caso de falha, que poderia ser verificada com NULL. As verificações também precisam determinar se a sequência é um caminho absoluto ou relativo, o que influencia o tamanho seguro da sequência. É muito código duplicado e está começando a cheirar.
Existe uma maneira de passar o conteúdo das elipses da entrada da minha função para outra função? Ou tenho que ligar parava_start()
primeiro e depois passe ova_list
para a função auxiliar?
Editar
Eu não sou contra passar ova_list
para o ajudante, eu só queria ter certeza de que nada mais existia. Parece-me que o compilador entende onde os argumentos variados começam, então fiquei curioso para saber se é possível transmiti-lo