2010-10-30 8 views
-1

Je reçois différentes erreurs chaque fois que je compile mon projet C. Il y a 3 séries de ceux qui apparaissent au hasard au cours du processus de construction, et tous sontCompilateur lançant aléatoirement différentes erreurs

syntax error before 'foo' 

ou

syntax error before 'foo' token. 

Ils se produisent dans des fichiers différents et il n'y a pas d'erreurs de syntaxe évidentes là-bas.

J'utilise Windows 7, Eclipse avec le plugin C/C++ pour faire un projet C et gcc 3.4.5 (mingwista special r3). Les drapeaux suivants sont utilisés:

-O0 -g3 -Wall -c -fmessage-length=0 

J'ai vérifié et revérifié tous mes fichiers pour les erreurs de syntaxe préprocesseur, mais n'a rien trouvé.

Quel genre d'erreurs dans mon code source peut générer ce comportement étrange? Comment puis-je éviter ce genre de maux de tête à l'avenir?

Répondre

0

J'ai trouvé l'erreur, c'était une instruction "include" mutuelle.

Client.h inclus Cashier.h qui comprenait également Client.h ...

Apparemment, cela peut générer des erreurs de syntaxe à des lignes complètement indépendants (ou même des fichiers!).

+1

C'est pourquoi vous devez utiliser des gardes inclus. Vous devez également essayer de ne pas faire cela, car cela peut en principe causer un débordement de pile dans le préprocesseur C. – RBerteig

1

Bien qu'il soit fondamentalement impossible de diagnostiquer les erreurs de compilation sans le code source, je vais tenter le coup.

Des erreurs de syntaxe apparemment inexplicables peuvent être provoquées, par ex. par des parenthèses ou des points-virgules manquants ou superflus. Au moins, c'est presque toujours ce que j'ai trouvé quand rien ne semblait aller de travers avec le code dont le compilateur se plaignait. Donc, ne regardez pas seulement la même ligne de code, regardez aussi les lignes de code précédentes.

Une autre raison possible à laquelle je peux penser est que votre code source utilise des fonctionnalités ou syntaxe C non standard. Ou votre code source utilise des fonctionnalités C99 tandis que votre compilateur prend la syntaxe C89.

+0

Désolé de ne pas fournir la source, mais les erreurs sont vraiment dispersées dans le projet et je devrais lier tout cela. J'ai également vérifié la syntaxe de tous les fichiers qui ont été marqués comme faux. – BoppreH

Questions connexes