2011-12-20 12 views

Respuesta

15

Usted necesita, como mínimo, incluir el tamaño de columna más a la derecha para una matriz 2-D. Se puede declarar así:

extern unsigned char LCD[][64]; 

lo contrario, el compilador no sería capaz de calcular el desplazamiento después de la primera fila.

0

Añadir al archivo de encabezado una declaración como:

extern unsigned char LCD[8][64]; 
2

En C una matriz no contiene información sobre el tamaño de cada una de sus dimensiones. Por lo tanto, el compilador necesita saber cuán grande es cada una de las dimensiones, excepto la primera. Por lo tanto, para corregir esta situación, hacer algo como esto:

LCD.h:

#define MINOR 64 
extern unsigned char LCD[][MINOR]; 

LCD.c:

unsigned char LCD[8][MINOR] = {((unsigned char)0)}; 

(Edit: Lo siento, metí la pata cosas en el principio , lo arregló ahora.)

+0

Puede ser útil enfatizar '#include" LCD.h "' en 'LCD.c' (de modo que la macro' MINOR' se define solo una vez en el archivo de encabezado) para excluir la posibilidad de tipos conflictivos para 'LCD' entre declaración y definición real (que no se detecta como error de compilación cuando están en diferentes archivos y también error de enlazador). –

+1

Pensé que cada vez que un proyecto contiene tanto un XYZ.hy un XYZ.c, es casi una regla universal y una apuesta segura que XYZ.c incluirá XYZ.h, ¿no? –

+1

Sí, tiene razón, pero como siempre es mejor confirmarlo (por ejemplo, para algunos programadores novatos que están leyendo SO). –

1

Con matrices multidimensionales, se deben especificar todas menos la primera dimensión. Entonces ...

extern unsigned char LCD[][64]; 

Debería hacerlo.

2

Intente especificar las dimensiones de la matriz. En C para una matriz multidimensional, solo se puede dejar una dimensión no especificada.

De esta manera:

extern unsigned char LCD[][64]; 
0

sizeof de la matriz LCD será rechazado si no ha definido el tamaño de las dos dimensiones!

sizeof refused : extern unsigned char LCD[][64]; 
sizeof accepted : extern unsigned char LCD[8][64]; 

¡Depende de lo que quieras!

Cuestiones relacionadas