Sé cómo usar typedef para definir un nuevo tipo (etiqueta).
Por ejemplo, typedef unsigned char int8
significa que puede usar “int8” para declarar variables de tipo unsigned char.
Sin embargo, no puedo entender el significado de la siguiente statement:
typedef unsigned char array[10]
¿Eso significa que la matriz es de tipo unsigned char [10]?
En otra parte del código, este tipo se usó como un argumento de función:
int fct_foo(array* arr)
¿Hay alguien que esté familiarizado con esta statement?
¿Eso significa que la matriz es de tipo
unsigned char[10]
?
Reemplace “de” con “otro nombre para el” y tendrá una statement correcta al 100% . Un typedef
introduce un nuevo nombre para un tipo.
typedef unsigned char array[10];
declara la array
como otro nombre para el tipo unsigned char[10]
, matriz de 10 unsigned char
.
int fct_foo(array* arr)
dice que fct_foo
es una función que lleva un puntero a una matriz de 10 caracteres unsigned char
como argumento y devuelve un int
.
Sin el typedef
, eso sería escrito como
int fct_foo(unsigned char (*arr)[10])
Lo que hace es que crea un tipo de datos llamado array
que es un array de longitud fija de 10 objetos unsigned char
en tamaño.
Aquí hay una pregunta de SO similar que preguntaba cómo hacer una matriz de longitud fija y que el formato typedef se explica con mayor profundidad.