Em algumas páginas de manual, por exemplo https://man7.org/linux/man-pages/man3/memchr.3.html , vejo o seguinte:
void *memchr(const void s[.n], int c, size_t n);
por exemplo, em https://man7.org/linux/man-pages/man3/bsearch.3.html ,
void *bsearch(const void key[.size], const void base[.size * .nmemb],
size_t nmemb, size_t size,
int (*compar)(const void [.size], const void [.size]));
Qual é o significado ou interpretação do termo [.n]
, [.nmemb]
e [.size]
? Qual é o significado do ponto também?
Eles representam o tamanho dos arrays, ou do objeto apontado (ou uma combinação). Por exemplo, em
s
seria historicamente escritoconst void * s
e aponta para uma matriz den
bytes (ou mais). O commit que introduz esta notação refere-se à sintaxe VLA, embora em C99 a sintaxe correspondente não use um ponto inicial e exija que o parâmetro size seja declarado antes de seu uso (e até onde eu saiba, não é válido paravoid *
) .Um exemplo válido deste tipo de sintaxe é
A
bsearch
declaração é mais complexa:key
aponta para um único objeto de tamanhosize
,base
aponta para uma matriz denmemb
elementos, cada um de tamanhosize
, e acompar
função é chamada com ponteiros para objetos de tamanhosize
.A documentação continua
Então o que isso está dizendo é que
n
os bytes do local apontado pors
são considerados