[C] Quand le compilateur se prend pour ta mère...
par
, 17/07/2015 à 10h37 (1843 Affichages)
Bonjour,
Hier, j'ai rencontré une erreur de compilation en passant d'un compilateur C Unix à un compilateur Windows.
Après avoir retourner mon code dans tout les sens, j'ai fait une petite recherche sur l'erreur en question... Il semble que le compilateur "Windows", pour une raison qui m'échappe, ai décidé que toute déclaration de paramètre qui n'est pas en début de bloc est invalide syntaxiquement.error C2143: syntax error : missing ';' before 'type'
Du coup,
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 //Bon { int maVariable =0; log("début de fonction"); }
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 //Pas Bon : Erreur de compilation { log("début de fonction"); int maVariable =0; }
Note : Le cas où j'ai réellement rencontré le problème est sur une fonction de log de début de bloc. Et donc, qui se trouvait avant la déclaration d'un paramètre.
Je comprends la logique lié à cette contrainte ajouter sur le compilateur, mais étant de l'école "Declare where it's use". J'ai envie de dire "touche à ton cul"...
D'ailleurs, il y a un autre cas où j'ai eu l'erreur :
Et pour le coup, j'aurai bien aimer avoir les déclarations là où je les utilises et non en début de bloc.
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 { int maVariableQuiADuSens = 42; utiliseUneVariable(maVariableQuiADuSens); // Ici un bon paquet de code bien moche int maVariableOfHell = 666; // Ici, erreur de compilation utiliseUneVariable(maVariableOfHell ); }
Si vous connaissez d'autres erreur de ce style, n'hésitez pas à partager !
Cordialement,
Patrick Kolodziejczyk.
source :
Billet sur l'erreur en question (anglais)