2010-10-19 28 views
2

Je suis en train de compiler le code suivant en utilisant le compilateur MPLAB C18 v3.36.Pourquoi cela ne compile-t-il pas en C18?

Le compilateur renvoie une erreur de syntaxe sur 'char rij;'. Mais quand je mets char rij; une ligne plus tôt (avant TRISA = ...), il compile ...

void setup(void) 
{ 
TRISD = 0b00000000; 
TRISA = 0b00000000; 
char rij; 
for (rij = 0; rij<ROWS; rij++) 
{ 
red_byte_array[rij]=0; 
green_byte_array[rij]=0; 
blue_byte_array[rij]=0; 
}  
} 
+6

Eh bien, vous savez en C (avant C99) vous devez d'abord mettre vos déclarations. – AraK

Répondre

8

Bien que je ne suis pas familier avec ce compilateur, je suppose qu'il suit la sémantique C89 qui interdisent le mélange des déclarations avec des déclarations. Vous ne pouvez donc déclarer des variables qu'au début du bloc.

+0

a.k.a: place le 'char rij' en haut de la fonction. – zdav

+1

Cette supposition est correcte - le meilleur vantard sur la page Web du compilateur (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014), est la compatibilité "ANSI '89". Donc, pas de mélange de déclarations et de code, éventuellement aucun commentaire (bien que ce soit une extension commune bien avant C99) et divers autres changements que vous êtes moins susceptibles de trébucher avec le code C commun. – Tommy