Como faço para silenciar o compilador C sobre um ponteiro de função leva qualquer número de argumento
Eu tenho um ponteiro de função dentro de umstruct
que é definido dinamicamente em tempo de execução para o endereço de outra função em vários locais do meu código. É definido no meu arquivo de cabeçalho assim:
void *(*run)();
Durante o tempo de compilação, recebo o seguinte aviso sobre isso:
warning: function declaration isn't a prototype
Este aviso é benigno, porque o ponteiro é usado em muitos lugares no meu código para chamar a função para a qual ele aponta, e tudo funciona muito bem. No entanto, eu fariarealment gosta de silenciar o aviso.
Se eu mudar para este:
void *(*run)(void);
Eu recebo erros de compilação, independentemente do uso, porque as várias funções que fazem uso do ponteiro têm diferentes números de argumentos e dizendovoid
dentro dos parênteses diz ao compilador que não aceita argumento
Não consigo usar umva_list
ou qualquer coisa assim, pois isso é simplesmente um ponteiro para outra função, e eu uso um ponteiro para todos eles porque mantém o código limpo e simple
Posso silenciar o aviso adicionando isso aos meus sinalizadores de compilador:
-Wno-strict-prototypes
Mas eu prefiro não ter que desativar os avisos do compilador com sinalizadores, se eu puder evitá-l
Então minha pergunta é:Como noto esse ponteiro de função no código de forma que o compilador esteja satisfeito com o fato de que ele aceita qualquer número de qualquer tipo de argument
O código funciona perfeitamente. Eu só quero que o aviso vá embora.