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 :

Petit problème programme .


Sujet :

C

  1. #21
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut Re:
    En fait le warning a not initialized machin chose ... ne vient pas de la ligne
    En effet une telle ligne ne génère ni erreur ni warning (je ne dis pas que c'est beau). Le fait est que, comme le dit bien le compilateur, a et b sont utilisées plus bas sont avoir été initialisées. Cause : scanf n'a pas été utilisée correctement ...

  2. #22
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Melem Voir le message
    En effet une telle ligne ne génère ni erreur ni warning
    Ca dépend du compilateur et de ses réglages... gcc voit qu'il manque 2 paramètres...

    http://emmanuel-delahaye.developpez....tm#cfg_compilo

    (3 ème fois dans ce thread... on se demande si les gens lisent les réponses...)
    Pas de Wi-Fi à la maison : CPL

  3. #23
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    En fait le warning a not initialized machin chose ... ne vient pas de la ligne
    Tout dépend de l'interprétation que tu fais, c'est la seule ligne où ces variables peuvent être initialisées or gcc nous indique que ça peut ne pas être le cas.

    Alors il est vrai que si juste au dessus tu mets a=b=0, le warning n'existera plus mais ça peut mettre la puce à l'oreille sur le fait que scanf peut poser problème.

  4. #24
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    Alors il est vrai que si juste au dessus tu mets a=b=0, le warning n'existera plus mais ça peut mettre la puce à l'oreille sur le fait que scanf peut poser problème.
    C'est pour ça que je suis contre une initialisation systématique et non réfléchie des variables...
    Pas de Wi-Fi à la maison : CPL

  5. #25
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    C'est pour ça que je suis contre une initialisation systématique et non réfléchie des variables...
    On est bien d'accord

  6. #26
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Ca dépend du compilateur et de ses réglages... gcc voit qu'il manque 2 paramètres...
    Malin ce gcc

  7. #27
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    J'utilise Devcpp .

    Pour info , j'ai réussi le programme en mettant " int main(int argc, char *argv[]) " au début .

    Comment savoir par quoi commencer ? void main (void) ? int main(int argc, char *argv[]) ?

    Et pour emmanuel , je suis allé voir mais je ne vois pas ou aller pour appliquer cela . ( les warnings )

  8. #28
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par guyom62 Voir le message
    Pour info , j'ai réussi le programme en mettant " int main(int argc, char *argv[]) " au début .

    Comment savoir par quoi commencer ? void main (void) ? int main(int argc, char *argv[]) ?
    C'est simple. Les 2 formes normalisées sont :
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main (int argc, char **argv)
    Rappel : void main (void) n'est pas une forme normalisée.

    On utilise la première, sauf si on a besoin de récupérer les paramètres de la ligne de commande, dans ce cas, on utilise la 2ème.

    Détails dans ton livre de C.
    Et pour emmanuel , je suis allé voir mais je ne vois pas ou aller pour appliquer cela . ( les warnings ) <...> J'utilise Devcpp .
    Relis mon article (dont j'ai passé le lien 3 fois), c'est expliqué.
    Pas de Wi-Fi à la maison : CPL

  9. #29
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 568
    Points
    41 568
    Par défaut
    Le main() a deux prototypes standard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int main(void)
    /* ou */
    int main(int argc, char *argv[])
    Le mieux est d'utiliser celui qui correspond à tes besoins: Si ton programme prend des paramètres en ligne de commande, tu utilises le second, sinon, tu utilises le premier...

    Edit: grillé par Emmanuel...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #30
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Par défaut, le niveau d'avertissement (Warnings) est très laxiste. Il est fortement recommandé d'utiliser la configuration minimale suivante :

    -Wall -Wextra -O2 -Wwrite-strings -Wstrict-prototypes


    Comment je fais pour utiliser cette configuration ??? Ce n'est pas marqué !

  11. #31
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    J'y rajouterai un petit -pedantic. Mais dans un contexte de développement plus poussé, la ligne de compilation est beaucoup plus grande, et il faut se tenir à jour des évolutions de son compilateur (de nouveaux warnings sont rajoutés à quasiment toutes les nouvelles versions). Il faut aussi avoir à l'esprit qu'un programme qui compile sans warning n'est pas non plus sur à 100% (loin de là)

    Comment je fais pour utiliser cette configuration ??? Ce n'est pas marqué !
    En fait tout dépend du mode de développement, si c'est via un EDI, il y a une partie configuration du projet. Si c'est en ligne de commande (ou via un makefile), c'est directement dans la ligne de compilation.

  12. #32
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par guyom62 Voir le message
    Par défaut, le niveau d'avertissement (Warnings) est très laxiste. Il est fortement recommandé d'utiliser la configuration minimale suivante :

    -Wall -Wextra -O2 -Wwrite-strings -Wstrict-prototypes
    Comment je fais pour utiliser cette configuration ??? Ce n'est pas marqué !
    Des centaines de gens ont lu cet article, c'est la première fois qu'on me pose cette question. Un peu plus loin je lis :
    Reglages dans wxDev-C++ (remplace Dev-C++ devenu obsolète)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Outils > Options du compilateur
    Dans la zone de saisie "Ajouter les commandes suivantes lors de l'appel du compilateur",
    copier/coller les options que je recommande.
    Valider
    Régénérer (Ctrl-F11)
    Plus assisté, tu meurs... Je signale quand même que de mon temps, on savait encore lire les docs, les modes d'emploi, les bouquins...
    Pas de Wi-Fi à la maison : CPL

  13. #33
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Le main() a deux prototypes standard:
    Code :

    int main(void)
    /* ou */
    int main(int argc, char *argv[])
    Ce n'est peut-être pas standard, mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, char **argv, char **env)
    fonctionne aussi.

  14. #34
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Le tout n'est pas que ça fonctionne.

    Certains compilateurs autorisent plusieurs choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void main() 
    main()  
    ...
    Ca n'est pas parce qu'ils l'autorisent que c'est conseillé

  15. #35
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Si c'était dit sur ton site : appliquez commandes suivantes dans : Outils -> option du compilateur ..

    Ca serait beaucoup beaucoup plus clair !

  16. #36
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par guyom62 Voir le message
    Si c'était dit sur ton site : appliquez commandes suivantes dans : Outils -> option du compilateur ..

    Ca serait beaucoup beaucoup plus clair !
    Mais c'est dit ! Ce que j'ai montré au-dessus est un copié/collé du site !

    J'indique comment faire pour Code::Blocs et pour WxDev-CPP (ex-dev-C++)

    Je ne sais quoi faire de plus !
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. [Débutant] Petit problème dans mon programme
    Par bsangoku dans le forum MATLAB
    Réponses: 8
    Dernier message: 22/04/2010, 16h19
  2. Réponses: 2
    Dernier message: 28/04/2008, 01h11
  3. Réponses: 10
    Dernier message: 02/12/2007, 00h13
  4. Petit problème de programmation.
    Par willow.A dans le forum C
    Réponses: 3
    Dernier message: 08/01/2007, 16h36
  5. petit problème de sortie de programme
    Par clampin dans le forum C
    Réponses: 2
    Dernier message: 17/06/2006, 11h51

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