# Problème de compilation

**URL:** <https://www.debian-fr.org/t/probleme-de-compilation/24250>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 9:19 UTC](https://www.debian-fr.org/t/probleme-de-compilation/24250 "2016-02-20T21:19:40Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![linux78](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/9fc29f/32.png) [@linux78](https://www.debian-fr.org/u/linux78)\
**Post date:** [Février 20, 2016, 9:19 UTC](https://www.debian-fr.org/t/probleme-de-compilation/24250/1 "2016-02-20T21:19:40Z")

</div>

Bonjour à tous,  
J’ai un problème lors de la compilation de mon programme écrit sous Code::Blocks (OS:Windows XP SP3).  
Voilà ce que me sort le compilateur:

`D:\Projet C\ProjetSkipper\AfficherResultat.c||In function `CalculCorrectionBarometrique':|
D:\Projet C\ProjetSkipper\AfficherResultat.c|16|error: syntax error before '{' token|
D:\Projet C\ProjetSkipper\AfficherResultat.c|32|error: parameter `NomPortArrivee' is initialized|
D:\Projet C\ProjetSkipper\AfficherResultat.c|33|error: parameter `Cpt' is initialized|
D:\Projet C\ProjetSkipper\AfficherResultat.c|37|error: syntax error before "NomPortArrivee"|
D:\Projet C\ProjetSkipper\AfficherResultat.c|137|error: syntax error before "Difference_Radians"|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|error: parameter `TableauDouziemes' is initialized|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: initialization makes pointer from integer without a cast|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: excess elements in scalar initializer|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: (near initialization for `TableauDouziemes')|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: excess elements in scalar initializer|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: (near initialization for `TableauDouziemes')|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: excess elements in scalar initializer|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: (near initialization for `TableauDouziemes')|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: excess elements in scalar initializer|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: (near initialization for `TableauDouziemes')|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: excess elements in scalar initializer|
D:\Projet C\ProjetSkipper\AfficherResultat.c|199|warning: (near initialization for `TableauDouziemes')|
D:\Projet C\ProjetSkipper\AfficherResultat.c|204|error: syntax error before "DureeQueLaMerMonte"|
D:\Projet C\ProjetSkipper\AfficherResultat.c|217|error: parameter `Compteur' is initialized|
D:\Projet C\ProjetSkipper\AfficherResultat.c|217|error: redefinition of parameter 'Compteur'|
D:\Projet C\ProjetSkipper\AfficherResultat.c|202|error: previous definition of 'Compteur' was here|
D:\Projet C\ProjetSkipper\AfficherResultat.c|218|error: syntax error before "do"|
D:\Projet C\ProjetSkipper\AfficherResultat.c|240|error: syntax error before "Heure_Entiere"|
||=== Build finished: 12 errors, 11 warnings ===|
`  
Quelqu’un saurait-il pourquoi le compilateur me sort ces erreurs et warnings,svp?  
Merci d’avance.

---

<div class="post-metadata">

**Author:** ![branch](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ee7513/32.png) [@branch](https://www.debian-fr.org/u/branch)\
**Post date:** [Février 20, 2016, 9:19 UTC](https://www.debian-fr.org/t/probleme-de-compilation/24250/2 "2016-02-20T21:19:41Z")

</div>

Salut,

Sans le code source on peut rien dire. Ca compile sous linux et pas sous windows ?

---

<div class="post-metadata">

**Author:** ![linux78](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/9fc29f/32.png) [@linux78](https://www.debian-fr.org/u/linux78)\
**Post date:** [Février 20, 2016, 9:19 UTC](https://www.debian-fr.org/t/probleme-de-compilation/24250/3 "2016-02-20T21:19:41Z")

</div>

Je ne l’ai pas encore testé sous Linux.  
Pour le code source, voilà les codes sources des fonctions (et des entêtes qui vont avec):  
Code de la fonction AfficherResultat (celle que le compilateur confond avec celle qui gère les corrections barométriques):

`#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "MenuPrincipal.h"
#include "utils.h"
#include "GererTables.h"
#include "GererTablesMarees.h"
#include "GestionTablesMarees.h"
#include "Structures.h"
#include "VariablesGlobales.h"
#include "AffichageTablesMarees.h"
#include "AfficherResultat.h"
#include "Calculs.h"
void AfficherResultat()
{
    float HeureArrivee=0.0;
    float DistanceKm=0.0;
    float DureeTrajet=0.0;
    float Marnage=0.0;
    float DureeDuFlot=0.0;
    float HeureMaree=0.0;
    int PositionPort=0.0;
    float HauteurArrivee=0.0;
    float VitesseMaxBateau=0.0, VitesseMaxKmh=0.0;
    int ChiffresHeureDepart=0, ChiffresMinutesDepart=0;
    double LambdaLongitudesDegres=0.0;
    double LambdaLongitudesRadians=0.0;
    double LatitudeBateauRadians=0.0, LatitudePortRadians=0.0, LongitudeBateauRadians=0.0, LongitudePortRadians=0.0;
    caracteristiqueMaree IntervalleMaree1;
    caracteristiqueMaree IntervalleMaree2;
    char* NomPortArrivee=NULL;
    int Cpt=0;
    float PressionAtmospheriquePort=0.0;
    int ResultatScanf=1;
    Booleen PortTrouve;
    NomPortArrivee=DemanderNomDuPort("Veuillez saisir le nom du port dans lequel vous souhaiteriez accoster : ");
    do
    {
        if (strcmp(TMaree[Cpt].nomDuPort, NomPortArrivee)==0)
        {
            PortTrouve=TRUE;
            PositionPort=Cpt;
        }
        else
        {
            PortTrouve=FALSE;
            Cpt++;
        }
    }
    while(PortTrouve==FALSE && Cpt<4);
    printf("Calcul de la distance entre le port et votre bateau en cours...\n");
    printf("Veuillez patienter...\n");
    LambdaLongitudesDegres = CalculDifferenceLongitudes(CaracteristiquesDuBateau.longitude,TMaree[Cpt].longitude);
    LambdaLongitudesRadians = LongitudeRadians(LambdaLongitudesDegres);
    LongitudeBateauRadians = LongitudeRadians(CaracteristiquesDuBateau.longitude);
    LatitudeBateauRadians = LatitudeRadians(CaracteristiquesDuBateau.latitude);
    LatitudePortRadians = LatitudeRadians(TMaree[Cpt].latitude);
    LongitudePortRadians = LongitudeRadians(TMaree[Cpt].longitude);
    DistanceKm = CalculDistance(LatitudeBateauRadians, LatitudePortRadians, LambdaLongitudesRadians);
    printf("Vous etes a %.2lf kilometres du port de %s.\n",DistanceKm,TMaree[Cpt].nomDuPort);
    do
    {
        (ResultatScanf && ChiffresHeureDepart >= 0 && ChiffresHeureDepart <= 23 && ChiffresMinutesDepart >= 0 && ChiffresMinutesDepart <= 59) ? 0: printf("Heure saisie incorrecte. Veuillez recommencer.\n");
        printf("Heure de depart au format HH MM : ");
        ResultatScanf = scanf("%d %d",&ChiffresHeureDepart,&ChiffresMinutesDepart);
        viderTampon();
    }
    while(ResultatScanf != 1 || ChiffresHeureDepart < 0 || ChiffresHeureDepart > 23 || ChiffresMinutesDepart < 0 || ChiffresMinutesDepart > 23);
    CaracteristiquesDuBateau.heureDepart = ConversionHeure(ChiffresHeureDepart, ChiffresMinutesDepart);
    do
    {
        (ResultatScanf && VitesseMaximaleDuBateau > 0 && VitesseMaximaleDuBateau <= 30) ? 0: printf("Vitesse saisie incorrecte. Veuillez recommencer.\n");
        printf("Vitesse maximale du bateau en noeuds : ");
        ResultatScanf = scanf("%f",&VitesseMaximaleDuBateau);
        viderTampon();
    }
    while(ResultatScanf != 1 || VitesseMaximaleDuBateau <= 0 || VitesseMaximaleDuBateau > 30);
    CaracteristiquesDuBateau.vitesseBateau = VitesseMaximaleDuBateau;
    printf("Calcul de l'heure d'arrivee...\n");
    VitesseMaximaleDuBateauEnKmH = ConversionVitesse(CaracteristiquesDuBateau.vitesseBateau);
    DureeTrajet = CalculTempsTrajet(VitesseMaximaleDuBateauEnKmH, DistanceKm);
    HeureArrivee = CalculHeureArrivee(DureeTrajet, CaracteristiquesDuBateau.heureDepart);
    CalculIntervalle(&IntervalleMaree1, &IntervalleMaree2, HeureArrivee, PositionPort);
    DureeDuFlot = fabs(IntervalleMaree1.heure - IntervalleMaree2.heure);
    Marnage = fabs(IntervalleMaree1.hauteur - IntervalleMaree2.hauteur);
    HeureMaree = DureeDuFlot / 6;
    HauteurArrivee = CalculHauteurAlArriveeDansLePort(Marnage, IntervalleMaree1.heure, DureeDuFlot, HeureArrivee);
    if (IntervalleMaree1.hauteur > IntervalleMaree2.hauteur)
    {
        HauteurArrivee -= IntervalleMaree1.hauteur;
    }
    else
    {
        HauteurArrivee += IntervalleMaree1.hauteur;
    }
    printf("Hauteur de la mer a votre arrivee dans le port : %f metres.\n",HauteurArrivee);
    if(TMaree[PositionPort].estUnPortPrincipal == 0)
    {
        do
        {
            (ResultatScanf && PressionAtmospheriquePort >= 963 && PressionAtmospheriquePort <= 1033) ? 0:printf("Pression atmospherique incorrecte. Veuillez reessayer.\n");
            printf("Pression atmospherique dans le port : ");
            ResultatScanf = scanf("%d",&PressionAtmospheriquePort);
            viderTampon();
        }
        while(ResultatScanf !=1 || PressionAtmospheriquePort < 963 || PressionAtmospheriquePort > 1033);
        CaracteristiquesDuBateau.tirantDeau = CalculCorrectionBarometrique(PressionAtmospheriquePort, CaracteristiquesDuBateau.tirantDeau);
    }
    if (fabs(HauteurArrivee) > CaracteristiquesDuBateau.tirantDeau)
    {
        printf("Vous pouvez accoster dans ce port sans crainte. Il y a assez d'eau.\n");
    }
    else
    {
        printf("Impossible d'accoster dans ce port. Il n'y aura pas assez d'eau.\n");
    }
    EcrireMenu();
}
`  
Prototype de la fonction:

[code]#ifndef AFFICHERRESULTAT\_H\_INCLUDED  
#define AFFICHERRESULTAT\_H\_INCLUDED  
#include “Structures.h”

void AfficherResultat();

#endif // AFFICHERRESULTAT\_H\_INCLUDED[/code]  
Code des autres fonctions mentionnées dans le code ci-dessus:

`include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "MenuPrincipal.h"
#include "utils.h"
#include "GererTables.h"
#include "GererTablesMarees.h"
#include "GestionTablesMarees.h"
#include "Structures.h"
#include "VariablesGlobales.h"
#include "AffichageTablesMarees.h"
#include "AfficherResultat.h"
#include "Calculs.h"
double LatitudeRadians(double LatDd)
{
    double resultat_radians=0.00;
    resultat_radians=LatDd*(M_PI/180);
    return(resultat_radians);
}
double LongitudeRadians(double LonDd)
{
    double resultat_radians=0.00;
    resultat_radians=LonDd*(M_PI/180);
    return(resultat_radians);
}
double CalculDistance(double LatBateau, double LatPort, double DifferenceDesLongitudes)
{
    double Difference_Radians;
    double Distance_Radians, Distance_Metres;
    double Distance_Kilometres;
    Difference_Radians=DifferenceDesLongitudes*(M_PI)/180;
    Distance_Radians=acos((sin(LatBateau)*sin(LatPort))+(cos(LatBateau)*cos(LatPort)*cos(Difference_Radians)));
    Distance_Metres=Distance_Radians*RAYON_TERRE;
    Distance_Kilometres=Distance_Metres/1000;
    return Distance_Kilometres;
}
double CalculDifferenceLongitudes(double LonBateau, double LonPort)
{
    double difference;
    difference=fabs(LonBateau-LonPort);
    return difference;
}
double ConversionVitesse (double VitesseNoeuds)
{
    double Vitesse_kmh;
    Vitesse_kmh=(VitesseNoeuds*MILLEMARIN)/1000;
    return Vitesse_kmh;
}
double CalculTempsTrajet(double VitesseKmH, double DistanceKilometres)
{
    double Temps_Trajet;
    Temps_Trajet=DistanceKilometres/VitesseKmH;
    return Temps_Trajet;
}
void CalculIntervalle(caracteristiqueMaree* Heure1, caracteristiqueMaree* Heure2, float HeureArrivee, int PositionDuPort)
{
        if(TMaree[PositionDuPort].tableauMaree[0].heure <= HeureArrivee && TMaree[PositionDuPort].tableauMaree[1].heure >= HeureArrivee)
        {
            Heure1->heure = TMaree[PositionDuPort].tableauMaree[0].heure;
            Heure2->heure = TMaree[PositionDuPort].tableauMaree[1].heure;
            Heure1->hauteur = TMaree[PositionDuPort].tableauMaree[0].hauteur;
            Heure2->hauteur = TMaree[PositionDuPort].tableauMaree[1].hauteur;
        }
        else if(TMaree[PositionDuPort].tableauMaree[1].heure <= HeureArrivee && TMaree[PositionDuPort].tableauMaree[2].heure >= HeureArrivee)
        {
            Heure1->heure = TMaree[PositionDuPort].tableauMaree[1].heure;
            Heure2->heure = TMaree[PositionDuPort].tableauMaree[2].heure;
            Heure1->hauteur = TMaree[PositionDuPort].tableauMaree[1].hauteur;
            Heure2->hauteur = TMaree[PositionDuPort].tableauMaree[2].hauteur;
        }
        else if(TMaree[PositionDuPort].tableauMaree[2].heure <= HeureArrivee && TMaree[PositionDuPort].tableauMaree[3].heure >= HeureArrivee)
        {
            Heure1->heure = TMaree[PositionDuPort].tableauMaree[2].heure;
            Heure2->heure = TMaree[PositionDuPort].tableauMaree[3].heure;
            Heure1->hauteur = TMaree[PositionDuPort].tableauMaree[2].hauteur;
            Heure2->hauteur = TMaree[PositionDuPort].tableauMaree[3].hauteur;
        }
        else
        {
            printf("Aucun intervalle d'heure maree ne peut contenir l'heure d'arrivee que vous avez specifiee.\n");
            printf("Veuillez noter que l'heure d'arrivee doit etre comprise entre la maree 1 et la maree 4.\n");
            printf("Elle doit donc etre comprise pour le port que vous avez specifie entre %d heures et %d heures.\n",(int) TMaree[PositionDuPort].tableauMaree[0].heure, (int) TMaree[PositionDuPort].tableauMaree[3].heure);
            printf("Vous allez etre redirige vers le menu principal afin de modifier la table des marees.\n");
            EffacerEcran();
            EcrireMenu();
        }
}
float CalculHauteurAlArriveeDansLePort(float marnage,float HeureDerniereMaree,float DureeFlot,float HeureArrivee)
{
    float HauteurRetournee=0.0;
    int TableauDouziemes[]={1,2,3,3,2,1};
    float DureeQueLaMerMonte;
    float Sum;
    int CompteurDouziemes;
    float Minutes;
    DureeQueLaMerMonte = (HeureArrivee-HeureDerniereMaree) / (DureeFlot/6);
    Minutes = (DureeQueLaMerMonte - (int) DureeQueLaMerMonte);
    for(CompteurDouziemes=0;CompteurDouziemes<(int) DureeQueLaMerMonte;CompteurDouziemes++)
    {
        Sum += TableauDouziemes[CompteurDouziemes];
    }
    Sum += (TableauDouziemes[CompteurDouziemes+1])*Minutes;
    HauteurRetournee = (Sum*Marnage) / 12;
    return HauteurRetournee;
}
float CalculCorrBarometr(float PressAtmo, float TirantDEau)
{
    Booleen PressionTrouvee;
    int CompteurCorrections=0;
    do
    {
        if(TableCorrections[CompteurCorrections].PressionAtmospherique==PressAtmo)
        {
            PressionTrouvee=TRUE;
        }
        else
        {
            PressionTrouvee=FALSE;
            CompteurCorrections++;
        }
    }
    while(PressionTrouvee==FALSE && Compteur<71);
    if (PressionTrouvee==TRUE)
    {
        return TirantDEau-TableCorrections[CompteurCorrections].CorrectionBarometrique;
    }
}
float CalculHeureArrivee(float Heure, float HeureDepart)
{
    int Minutes,Heure_Entiere;
    Heure_Entiere=(int) (HeureDepart+Heure);
    Minutes=(((Heure+HeureDepart)-Heure_Entiere)*60);
    if(Heure+HeureDepart > 24)
    {
        printf("Attention : votre voyage va durer plus d'une journee.\n");
        printf("La table des marees risque d'etre invalide dans %d jour(s).\n",Heure_Entiere/24);
        Heure_Entiere -= ((Heure_Entiere)/24 * 24);
    }
    printf("a %d heures ",Heure_Entiere);
    if(Minutes > 0)
    {
        printf("%d minutes",Minutes);
    }
    return(Heure_Entiere+(float) Minutes/60);
}
float ConversionHeure(int Heures, int Minutes)
{
    float ResultatDecimal;
    ResultatDecimal = ((Heures*60) + Minutes);
    return ResultatDecimal;
}
`  
Prototypes de ces fonctions:

[code]#ifndef CALCULS\_H\_INCLUDED  
#define CALCULS\_H\_INCLUDED  
#include “Structures.h”

double LatitudeRadians(double LatDd);  
double LongitudeRadians(double LonDd);  
double CalculDistance(double LatBateau, double LatPort, double DifferenceDesLongitudes);  
double CalculDifferenceLongitudes(double LonBateau, double LonPort);  
double ConversionVitesse (double VitesseNoeuds);  
double CalculTempsTrajet(double VitesseKmH, double DistanceKilometres);  
void CalculIntervalle(caracteristiqueMaree\* Heure1, caracteristiqueMaree\* Heure2, float HeureArrivee, int PositionDuPort);  
float CalculHauteurAlArriveeDansLePort(float Marnage, float HeureDerniereMaree, float DureeFlot, float HeureArrivee);  
float CalculCorrBarometr(float PressAtmo, float TirantDEau)  
float CalculHeureArrivee(float Heure, float HeureDepart);  
float ConversionHeure(int Heures, int Minutes);

#endif // CALCULS\_H\_INCLUDED  
[/code]  
Définition des structures (fichier .h):

[code]#ifndef STRUCTURES\_H\_INCLUDED  
#define STRUCTURES\_H\_INCLUDED

typedef struct structureBateau structureBateau ;  
struct structureBateau  
{  
float tirantDeau ;  
float vitesseBateau ;  
float longitude;  
float latitude ;  
float heureDepart ;  
};

typedef struct caracteristiqueMaree caracteristiqueMaree;  
struct caracteristiqueMaree  
{  
float heure ;  
float hauteur ;  
};

typedef struct structureTableMaree structureTableMaree;  
struct structureTableMaree  
{  
char\* nomDuPort ;  
int estUnPortPrincipal ;  
caracteristiqueMaree tableauMaree[4] ;/\*Heure de la pleine mer 1 et de la hauteur. \*/  
float pressionAtmospherique ;  
float longitude ;  
float latitude ;  
};

typedef enum Booleen Booleen;  
enum Booleen  
{  
FALSE=0, TRUE=1  
};  
typedef struct Occurrences Occurrences;  
struct Occurrences  
{  
int NumeroOccurrence;  
int PositionOccurrence;  
};  
typedef struct CorrectionsBarometrique CorrectionsBarometrique;  
struct CorrectionsBarometrique  
{  
int PressionAtmospherique;  
int CorrectionBarometrique;  
};  
#endif // STRUCTURES\_H\_INCLUDED  
[/code]  
Variables utilisées (globales):

`#ifndef VARIABLESGLOBALES_H_INCLUDED
#define VARIABLESGLOBALES_H_INCLUDED
#define RAYON_TERRE 6378000
#define MILLEMARIN 1852
#include "Structures.h"
structureTableMaree TMaree[4];
CorrectionsBarometrique TableCorrections[70];
structureBateau CaracteristiquesDuBateau;
#endif // VARIABLESGLOBALES_H_INCLUDED`  
C’est tout.

---

<div class="post-metadata">

**Author:** ![branch](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ee7513/32.png) [@branch](https://www.debian-fr.org/u/branch)\
**Post date:** [Février 20, 2016, 9:19 UTC](https://www.debian-fr.org/t/probleme-de-compilation/24250/4 "2016-02-20T21:19:42Z")

</div>

`#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "MenuPrincipal.h"
#include "utils.h"
#include "GererTables.h"
#include "GererTablesMarees.h"
#include "GestionTablesMarees.h"
#include "Structures.h"
#include "VariablesGlobales.h"
#include "AffichageTablesMarees.h"
#include "AfficherResultat.h"
#include "Calculs.h"
void AfficherResultat()
{ / ****ligne 16**** /
    float HeureArrivee=0.0;`

`AfficherResultat.c||In function `CalculCorrectionBarometrique':|
AfficherResultat.c|16|error: syntax error before '{' token|`

A la ligne 16, le compilateur te dit que tu es dans la fonction CalculCorrectionBarometrique : alors que tu viens de commencer la fonction AfficherResultat. Donc c’est l’un de tes en-têtes .h qui n’est pas bon, peut-être as-tu oublié de refermer une accolade ?

---

<div class="post-metadata">

**Author:** ![linux78](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/9fc29f/32.png) [@linux78](https://www.debian-fr.org/u/linux78)\
**Post date:** [Février 20, 2016, 9:19 UTC](https://www.debian-fr.org/t/probleme-de-compilation/24250/5 "2016-02-20T21:19:43Z")

</div>

J’ai trouvé la réponse (j’avais oublié dans le fichier d’entête de mettre un ; après le prototype de la fonction qui se charge des corrections barométriques.) 😒 .  
Merci pour tes réponses.
