我正在Unix中做一個模擬F1比賽的C程序。 我的結構中有一個問題,我無法確定問題。編譯時出現意外錯誤
我的第一個結構:
typedef struct {
int NumVoiture; /* numéro de la voiture : 1..24 Ne pas oublier d'ajouter 1 si number >= 13 lors de l'affichage */
int Status; /* le statut de la voiture, ARRETCOURT, Abandon, etc... */
int TourActuel; /* le numéro du tour actuel de la voiture */
int SecteurActuel; /* le numéro du secteur actuel de la voiture (0..2) */
TempsDuTour TempsDuTour; /* le temps du tour courant */
TempsDuTour MeilleurTour; /* le meilleur de temps de la séance pour cette voiture */
TempsDuTour MeilleursSecteurs; /* chaque meilleur secteur de la séance pour cette voiture */
struct timeval HeureFinSecteur[NBSECTEURS]; /* heure de passage à la fin de chaque secteur */
struct timeval HeureDebutSecteur; /* heure (précision à la microsec) au début d'un secteur, voir timeval sur le net */
} Voiture;
我的第二個結構:
void initContaineur(Containeur * x, int NumVoiture, int TypeDeSeance, DonneesPartagees * Voiture, DonneesPartagees * Session, DonneesPartagees * CompressionTemporelle, Voiture ** Rang)
{
x->NumVoiture = NumVoiture;
x->TypeDeSeance = TypeDeSeance;
x->Voiture = Voiture;
x->Session = Session;
x->CompressionTemporelle = CompressionTemporelle;
x->Rang = Rang;
}
錯誤說
:typedef struct
{
int NumVoiture;
int TypeDeSeance;
DonneesPartagees * Voiture;
DonneesPartagees * Session;
DonneesPartagees * CompressionTemporelle; /* compression temporelle */
Voiture ** Rang; /* tableau de pointeurs */
} Containeur;
,當我試圖使用該功能出現問題
expected declaration specifiers or '...' before 'Voiture'
當我打電話給Voiture * Rang [NBVOITURES]時出現第二個錯誤; ()
'Rang' undeclared (first use in this function)
在此先感謝!
你有'Voiture'作爲一個類型和一個結構字段。 –
@MarceloCantos:這是允許的:結構字段位於與其他標識符不同的名稱空間中。正如jwodder在他/她的回答中所說的那樣,這個問題是這段代碼試圖將它作爲一個變量名來使用,這與類型標識符的使用相沖突。 – ruakh
@ruakh:我不確定有效性,但它是一個非常可疑的做法。 –