Question

Je compile un .c simple dans Visual C ++ avec compilation comme Code C (/ TC) et j'obtiens cette erreur du compilateur

erreur C2143 :erreur de syntaxe :manquant ';' Avant 'Type'

sur une ligne qui appelle une structure simple

 struct foo test;

il en va de même pour l'utilisation du typedef de la structure.

erreur C2275 :'FOO' :utilisation illégale de ce type comme expression

Était-ce utile?

La solution

J'ai oublié qu'en C il faut déclarer toutes ses variables avant tout code.

Autres conseils

Avez-vous accidentellement omis un point-virgule sur une ligne précédente ?Si la ligne précédente est un #include, vous devrez peut-être chercher ailleurs le point-virgule manquant.

Modifier:Si le reste de votre code est du C++ valide, il n'y a probablement pas suffisamment d'informations pour déterminer quel est le problème.Peut-être pourriez-vous publier votre code sur un Pastebin pour que nous puissions tout voir.

Idéalement, en le réduisant à poster, il se mettra soudainement à fonctionner et vous aurez alors découvert le problème !

Parce que vous avez déjà créé un typedef pour la structure (parce que vous avez utilisé la version 's1'), vous devez écrire :

foo test;

plutôt que

struct foo test;

Cela fonctionnera à la fois en C et en C++

Comment votre type de structure est-il défini ?Il y a deux façons de procéder :

// This will define a typedef for S1, in both C and in C++
typedef struct {
     int data;
     int text;
} S1;

// This will define a typedef for S2 ONLY in C++, will create error in C.
struct S2 {
     int data;
     int text; 
};

C2143 dit essentiellement que le compilateur a obtenu un jeton qu'il considère comme illégal dans le contexte actuel.L'une des implications de cette erreur est que le problème réel peut exister avant la ligne qui déclenche l'erreur du compilateur.Comme Greg l'a dit, je pense que nous devons voir davantage votre code pour diagnostiquer ce problème.

Je ne sais pas non plus pourquoi vous pensez que le fait qu'il s'agisse d'un code C++ valide est utile lorsque vous essayez de comprendre pourquoi il ne se compile pas en C ?C++ est (en grande partie) un sur-ensemble de C, il existe donc un certain nombre de raisons pour lesquelles un code C++ valide peut ne pas être du code C syntaxiquement correct, notamment le fait que C++ traite les structures comme des classes !

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top