2010-07-28 7 views
0

J'ai trois lignes de code:visual studio Etrange 2008 Erreur de compilateur C

//int pi; 
activation->structSize = sizeof(rmsActivationT); 
int pi; //program wont compile with this here 

chaque fois que je décommenter la deuxième int pi et de commenter le premier int pi je reçois cette erreur: erreur de syntaxe: manquant « ; » avant 'type'. Quand je décommente ce premier int pi et commente le second int pi, mon compilateur ne se plaint plus. Cette erreur me dérange depuis près d'une journée maintenant toutes les idées seraient géniales.

Merci

studios visuels 2008 Windows XP 32 bits

+2

Peut-être que vous devriez montrer plus que cela ... –

+0

Pourriez-vous montrer un certain contexte, et le point exactement quelle ligne le message d'erreur pointe vers? En ce moment, je ne ferais que spéculer de façon extravagante. –

+0

pouvez-vous faire une faveur pour moi et ajouter une ligne vide entre chacun et essayer vos diverses options de commentaire/uncomment/compilation? – Caladain

Répondre

5

Etes-vous, peut-être, la compilation du code comme C au lieu de C++? C (antérieure à C99, que Visual Studio ne prend pas en charge) exige que toutes les définitions d'un bloc précèdent toutes les autres instructions.

+0

Tu m'as battu dessus. C'est presque certainement le problème, car c'est exactement l'erreur qui en résultera. Si le fichier est un fichier .cc/.cpp, vérifiez le paramètre "C++/Advanced/Compile as" dans les propriétés du projet. Si votre fichier est un fichier ".C", rappelez-vous que Windows n'est pas sensible à la casse, vous devrez renommer les fichiers source ou utiliser le paramètre ci-dessus pour forcer la compilation C++. –

0

J'ai eu le même problème.

Les erreurs de compilation sont:

* main.cpp (325): erreur C2601: 'FLAG': définitions de fonctions locales sont illégales

main.cpp (323): cette ligne contient un « { 'qui n'a pas encore été égalée

main.cpp (326): erreur fatale C1075: fin de fichier trouvé avant l'accolade gauche '{' à 'main.cpp (323)' a été adapté *

Mais il n'y avait rien de mal avec mon code. J'ai compté toutes les parenthèses et le nombre correspondant. Il n'y avait aucune fonction dans une autre fonction. J'ai résolu le problème en supprimant tous les commentaires "//" du code source. Il semble que la raison en soit une mauvaise mise en forme de ligne qui fait que le compilateur manque un saut de ligne, donc la ligne après un commentaire est également traitée comme un commentaire.

Par exemple:

// This is a comment 

This_is_a_line; 

est traitée comme:

// This is a comment This_is_a_line; 
Questions connexes