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 :

erreur compilation


Sujet :

C++

  1. #21
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    Citation Envoyé par VoidSeer
    D'ailleurs, après un coup d'oeil sur le web, le type de retour implicite n'existe plus en C99 non plus.
    T'en es bien sûr?

    Sous VS8, ce code:
    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
    16
    17
    18
    19
    20
    21
     
    func()
    {
        return 1;
    }
     
    class A
    {
    public:
        func()
        {
            return 2;
        }
    };
     
    main()
    {
        A a;
        cout << func() << " " << a.func() << endl;
        return 0;
    }
    Compile sans aucun warning chez moi

  2. #22
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 15
    Par défaut
    Merci pour votre aide.En fait , je sais tout ca ... ma question etait comment faire pour éviter d'avoir un retour d'erreur lorsque aucun type n'est donné. Il ya une option de compile que j'ai cru connaitre -c89 ou -c99 mais que je n'arrive pas retrouver.

    Citation Envoyé par BigNic
    je n'ai rien trouvé dans soustrup ni sur le net, mais de mémoire en C++ le type de retour par defaut est int. donc écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        f()
         {
          // du code
         }
    revient à écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int f()
    {
    // du code 
    }
    Et on peut le faire pour n'importe quelle fonction pas seulement les constructeurs. Mais l'absence du type de retour est à proscrire, car trop souvent les gens confondent rien et void et donc cette façon de faire induit des confusions.

    Sinon pour l'intégration intégrer du C dans du C++ reste le plus facile. Souvent ce la revient a changer de compilo (de C vers C++) et changer certain proto de fonction.

  3. #23
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Quelle que soit l'option de compilation, ça ne marchera pas en C++

  4. #24
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 15
    Par défaut
    Est ce que cela veut dire que l'article qui est sur developpez.com est faux : http://nicolasj.developpez.com/artic...ibilites/#LI-E
    Il est dit qu' " Un compilateur C bien paramètré vous signalera cet oubli par un warning. "

  5. #25
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    le C et le C PLUS PLUS sont deux langages qui suivent des normes proches mais différentes.
    Donc en compilant C avec une vielle norme ça passera.
    En C PLUS PLUS je doute que ça passe

  6. #26
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 15
    Par défaut
    OK, donc pour que je puisse à l'avenir compiler de vieille lib qui sont en C++, il faut que je trouve cette commande : c'est pour ca que je demande de l'aide.....
    Citation Envoyé par VoidSeer
    le C et le C PLUS PLUS sont deux langages qui suivent des normes proches mais différentes.
    Donc en compilant C avec une vielle norme ça passera.
    En C PLUS PLUS je doute que ça passe

  7. #27
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Je ne suis pas sûr qu'on se soit compris.
    Ce que j'essaie de dire c'est qu'à ma connaissance le retour implicite en int n'existe pas en C++. Si tu disposes d'une vielle bibliothèque C++ qui l'utilise alors j'ai tors.

    Pour ce qui est du C, ce retour implicite existe pour toute version pré-C99. Comment compiler avec une vielle norme dépend de ton compilateur. Si tu utilises gcc, il y a une option qui permet de préciser avec quelle version du standard (-std) tu souhaites bosser.
    En choisissant le C89, le type de retour implicite compilera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -std=c89 mon_ficher.c

  8. #28
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 15
    Par défaut
    E ben c'est etrange mais j'ai recupere une lib sur le net en C++ avec de telles fonctions...
    Merci pour ton aide ...

    Citation Envoyé par VoidSeer
    Je ne suis pas sûr qu'on se soit compris.
    Ce que j'essaie de dire c'est qu'à ma connaissance le retour implicite en int n'existe pas en C++. Si tu disposes d'une vielle bibliothèque C++ qui l'utilise alors j'ai tors.

    Pour ce qui est du C, ce retour implicite existe pour toute version pré-C99. Comment compiler avec une vielle norme dépend de ton compilateur. Si tu utilises gcc, il y a une option qui permet de préciser avec quelle version du standard (-std) tu souhaites bosser.
    En choisissant le C89, le type de retour implicite compilera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -std=c89 mon_ficher.c

  9. #29
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    Citation Envoyé par VoidSeer
    Je ne suis pas sûr qu'on se soit compris.
    Ce que j'essaie de dire c'est qu'à ma connaissance le retour implicite en int n'existe pas en C++. Si tu disposes d'une vielle bibliothèque C++ qui l'utilise alors j'ai tors.

    Pour ce qui est du C, ce retour implicite existe pour toute version pré-C99. Comment compiler avec une vielle norme dépend de ton compilateur. Si tu utilises gcc, il y a une option qui permet de préciser avec quelle version du standard (-std) tu souhaites bosser.
    En choisissant le C89, le type de retour implicite compilera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -std=c89 mon_ficher.c
    T'es têtu et tu le fais exprès ou t'es têtu et tu le fais pas exprès ?
    Regarde mon exemple plus haut, la méthode func() de la classe A a un type implicite en int, et ça compile et retourne très bien.

    De plus, quand je fais a. VS8 me dit bien que le type est int.

  10. #30
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Je suis tetu et je le fais exprès car si VS8 accepte ton code, g++ le refuse.
    Et vu la gueule du message d'erreur l'OP bosse avec g++. Si VS8 accepte de compiler un truc non standard, tant mieux. Mais je doute que se payer une licence VS8 soit une réponse satisfaisante à la question posée.

    EDIT: Je confirme, l'"implicit int" n'existe pas en C++98, codex dixit

  11. #31
    Membre émérite Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Par défaut
    Je confirme, Mygwin te le signale...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    4 C:\Dev-Cpp\SansNom15.cpp ISO C++ forbids declaration of `func' with no type

  12. #32
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 297
    Par défaut
    Citation Envoyé par JulienDuSud
    Sous VS8, ce code:
    [...]
    Compile sans aucun warning chez moi
    Faut pas désactiver les warnings quand tu compiles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ... error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    ...
    (VC 2005 Express)
    Quand à la norme C++, je n'en connais qu'une (double) qui n'a connu que quelques patchs légers dispos sur le site de BS. Le gros patch devant arriver pour 2009.
    Je ne suis pas sûr que l'on puisse parler de norme dans le cas du C++ de l'ARM (Annoted Reference Manual).
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  13. #33
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    Citation Envoyé par Luc Hermitte
    Faut pas désactiver les warnings quand tu compiles.
    Bah c'est pas le cas

  14. #34
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 15
    Par défaut
    Ok , je suis heureux de constater que chacun d'entre vous a le meme probleme que moi avec ce type de code...Est ce que quelqu'un connait donc la formule magique indiqué par Nicolas dans son article ....

  15. #35
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    A priori avec g++ ou assimilé c'est impossible, tout du moins pour les versions 3+ et 4.

  16. #36
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 297
    Par défaut
    Quelle formule magique ?
    La lib n'est pas faite pour être compilée avec un compilateur C++ à jour. Changes-en, patches-la, contacte l'auteur, ... Tu n'as pas grand chose d'autre à faire. Accessoirement, dans les quelques lignes que tu as montrés, j'ai entre-apperçu la violation de quelques petites règles de qualité. Tu ne peux en utiliser une autre ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. RXControl RxRichEdit ERREUR Compilation
    Par loleske dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/02/2005, 18h12
  2. [FreePascal] Erreur compilation ou défaut Dev-Pascal ?
    Par molesqualeux dans le forum Free Pascal
    Réponses: 5
    Dernier message: 27/12/2004, 10h00
  3. [Débutant]Erreur compilation !
    Par gandalf_le_blanc dans le forum AWT/Swing
    Réponses: 23
    Dernier message: 30/08/2004, 14h23
  4. Trop de message d'erreurs: compilation KO
    Par jeannot27 dans le forum C++Builder
    Réponses: 6
    Dernier message: 21/01/2004, 16h45
  5. Erreur compilation DX8.1 VC++ 6
    Par d.vidal dans le forum DirectX
    Réponses: 1
    Dernier message: 10/09/2003, 09h04

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