저는 F1 경주를 시뮬레이트하는 C 프로그램을 유닉스에서하고 있습니다. 내 구조체에 문제가 있으며 문제를 식별 할 수 없습니다.컴파일 할 때 예기치 않은 오류가 발생했습니다.
이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; /* 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;
그리고 내 두 번째 구조체 : 그 기능을 사용하려고 할 때
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];"라고 말하면 두 번째 오류가 발생합니다. main()
'Rang' undeclared (first use in this function)
미리 감사드립니다!
당신은 타입 필드와 구조 필드로 모두'Voiture'를 가지고 있습니다. –
@MarceloCantos : 허용됩니다 : 구조체 필드는 다른 식별자와는 별도의 네임 스페이스에 있습니다. jwodder가 말했듯이 그 문제는이 코드가 타입 식별자 사용과 충돌하는 변수 이름으로 사용하려고한다는 것입니다. – ruakh
@ruakh : 나는 타당성에 대해서는 확신하지 못했다. 그러나 그럼에도 불구하고 극도로 모호한 습관이다. –