Certamente você já ouviu falar de Stdarg.h em mais de uma ocasião, pois sua relevância e impacto em diversas áreas o tornaram um tema de interesse geral. Desde o seu surgimento, Stdarg.h tem captado a atenção de pesquisadores, profissionais e entusiastas, que buscam constantemente saber mais sobre suas origens, evolução e efeitos. Neste artigo, exploraremos a fundo tudo relacionado a Stdarg.h, desde sua formação até seu status atual, com o objetivo de compreender melhor sua influência e alcance em nossa sociedade.
| Biblioteca padrão do C |
stdarg.h é um cabeçalho da biblioteca padrão do C da linguagem de programação C que permite que funções utilizem um número indefinido de argumentos[1]. Ela provê facilidades de navegação entre uma lista de argumentos sem que a quantidade e o tipo de argumentos seja conhecido. A linguagem C++ implementa tal funcionalidade no cabeçalho cstdarg; Apesar de permitido, o cabeçalho C é obsoleto no C++[carece de fontes].
Funções variádicas são funções que podem receber um número variável de argumentos, sinalizadas através de reticências no lugar do último parâmetro. Um exemplo é a função printf. Uma declaração típica:
int check(int a, double b, ...);
As funções variádicas precisam possuir ao menos um parâmetro nomeado portanto,
char *wrong(...);
não é permitido no C.(Em C++ tal declaração é permitida, mesmo não sendo muito útil.) Em C, uma vírgula precisa preceder as reticências; no C++, é opcional.
A mesma sintaxe é utilizada durante a definição:
long func(char, double, int, ...);
long func(char a, double b, int c, ...)
{
/* ... */
}
As reticências podem aparecer em definições ao estilo antigo::
long func();
long func(a, b, c, ...)
char a;
double b;
{
/* ... */
}
stdarg.h| Nome | Descrição | Compatibilidade |
|---|---|---|
va_list |
tipo de iteração de argumentos | C89 |
stdarg.h| Nome | Descrição | Compatibilidade |
|---|---|---|
va_start |
Comece a iteração com um va_list |
C89 |
va_arg |
Recupere um argumento | C89 |
va_end |
Limpe um va_list |
C89 |
va_copy |
Copie o conteúdo de um va_list para outro |
C99 |
stdarg.h». Consultado em 4 de julho de 2009