IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[compilation] problème avec functexcept.h


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 49
    Par défaut [compilation] problème avec functexcept.h


    J'ai un petit soucis de compilation avec un programme.
    Je dispose de deux fichiers buffer.cpp/h qui contiennent quasiement rien, juste de quoi faire 2 buffers sous forme de fifo.

    Voici leurs codes :
    buffer.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #include <queue>
     
    // taille des 'frames' des buffers 
    #define TAILLEFRAMEYUV 576 * 720 * 2
     
    // taille de chaque buffer
    #define NBFRAMEBUFFERYUV 100 
    #define NBFRAMEBUFFERSOCKET 100
     
    using namespace std ;
     
    extern queue <unsigned char*> bufferYUV ;   
     
    extern queue <unsigned char*> bufferSocket ;
    ainsi que le .cpp correspondant :

    buffer.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include "buffer.h"
     
    using namespace std ;
     
    // les buffers YUV 
    queue <unsigned char*> bufferYUV ;
     
    // le buffer de la socket
    queue <unsigned char*> bufferSocket ;
    Mon soucis, c'est que lors de la compilation j'ai systématiquement le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    In file included from /usr/lib/gcc/i486-slackware-linux/3.4.6/../../../../include/c++/3.4.6/queue:67,
                     from includes/buffer.h:8,
                     from src/decodeSocketTStoSDI.cpp:20:
    /usr/lib/gcc/i486-slackware-linux/3.4.6/../../../../include/c++/3.4.6/bits/functexcept.h:36: error: expected initializer before "namespace"
    In file included from /usr/lib/gcc/i486-slackware-linux/3.4.6/../../../../include/c++/3.4.6/queue:67,
                     from includes/buffer.h:8,
                     from src/threads.cpp:21:
    /usr/lib/gcc/i486-slackware-linux/3.4.6/../../../../include/c++/3.4.6/bits/functexcept.h:36: error: expected initializer before "namespace"
    le fichier src/decodeSocketTStoSDI.cpp inclut à la ligne 20 le fichier includes/buffer.h qui lui meme inclut <queue>, comme vous avez pu le voir dans le code source.

    L'erreur provient de functexcept.h qui a la ligne 36 déclare le namespace std.

    Vu que c'est un fichier que je n'ai jamais touché, je me demande bien pourquoi cette erreur vient de là ...

    Quelqu'un aurait-il une idée ?

    merci d'avance !

    Raph

  2. #2
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    je ne suis pas certain que ça vient de là, mais:
    1/ Il ne faut pas utiliser la directive using namespace dans un fichier en-tête. (voir cette faq).
    2/ L'utilisation systématique d'un pare-feu de compilation est fortement conseillée.

    Et puis (ça n'a aucun rapport avec ton problème par contre), les #define sont à proscrire. Utilise un const type plutôt.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 49
    Par défaut
    merci de tes conseils, j'étais au courant pour les using namespace à proscrire dans les fichier .h.

    Par contre, qu'est ce qu'un pare feu de compilation ? (j'ai l'impression de poser une question bête).

  4. #4
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Dark Raph Voir le message
    Par contre, qu'est ce qu'on pare feu de compilation ?
    C'est lorsqu'on rajoute #ifndef MACHIN #define MACHIN /* déclarations */ #endif
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifndef MA_CLASSE_H
    #define MA_CLASSE_H
     
    class MaClasse
    {
    // mon code
    };
     
    #endif
    Ca évite que ce qui est céclaré dans ce fichier le soit plusieurs fois.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 49
    Par défaut
    Merci !

    D'accord, ça s'appelle comme ça donc Grace à ton explication je viens de comprendre l'intérêt d'un tel pare feu ! Et je me suis empressé d'en mettre un dans chacun de mes headers ...

    ... par contre le problème est toujours là.

    Qu'est ce que l'erreur error: expected initializer before "namespace" peut-elle laissait sous entendre ?

  6. #6
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut
    As-tu enlevé le using namespace du .h ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Compiler] Problème avec uiimport
    Par sebten dans le forum MATLAB
    Réponses: 8
    Dernier message: 14/08/2008, 14h04
  2. Problème pour compiler Ogre avec VS 2005
    Par Oxideur dans le forum Ogre
    Réponses: 2
    Dernier message: 01/03/2007, 18h33
  3. problème avec les .java compilés
    Par root76 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 05/05/2006, 19h14
  4. [Débutant] J'ai un problème avec la compilation des classes
    Par Paulinho dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/11/2005, 14h23
  5. [Kylix] problème compilation kylix3 avec redhat 9.0
    Par madininaoursa dans le forum EDI
    Réponses: 1
    Dernier message: 02/07/2003, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo