Ao navegar em algum código-fonte, deparei-me com uma função como esta:
void someFunction(char someArray[static 100])
{
// do something cool here
}
Com algumas experiências, parece que outros qualificadores podem aparecer lá também:
void someFunction(char someArray[const])
{
// do something cool here
}
Parece que qualificadores só são permitidos dentro de [
]
quando a matriz é declarada como um parâmetro de uma função. O que eles fazem? Por que é diferente para parâmetros de função?
fonte
int foo(struct bar [static 1]);
vez deint foo(struct bar *);
como a assinatura para funções que não aceitam ponteiros NULL. (Eu sei gcc tem uma sintaxe diferente do padrão alternativo para sinalizar tais funções para que o compilador pode dar avisos ..)clang
agora avisa corretamente quando você tenta passar um argumento NULL conhecido para uma função com uma[static 1]
declaração de parâmetro.if (!someArray) { somecode... }
pode ser removido