Mientras navegaba por el código fuente, me encontré con una función como esta:
void someFunction(char someArray[static 100])
{
// do something cool here
}
Con algo de experimentación, parece que otros calificadores también pueden aparecer allí:
void someFunction(char someArray[const])
{
// do something cool here
}
Parece que los calificadores solo se permiten dentro de [
]
la matriz cuando se declara como parámetro de una función. ¿Qué hacen estos? ¿Por qué es diferente para los parámetros de función?
fuente
int foo(struct bar [static 1]);
lugar deint foo(struct bar *);
como la firma para funciones que no aceptan punteros NULL. (Sé que gcc tiene una sintaxis alternativa no estándar para marcar tales funciones para que el compilador pueda dar advertencias ...)clang
ahora advierte correctamente cuando intenta pasar un argumento NULL conocido a una función con una[static 1]
declaración de parámetro.if (!someArray) { somecode... }
podría ser eliminado