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

Visual C++ Discussion :

Code de retour d'un void main


Sujet :

Visual C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut Code de retour d'un void main
    Bonjour,

    je lance des exécutable par l'intermédiaires de .bat où je vérifie après l'appel à l'exécutable "IF %ERRORLEVEL% NEQ 0 EXIT ERRORLEVEL"

    Par contre, je me suis aperçu que ça sortait pour un exécutable qui fonctionne très bien mais qui n'a pas de retour d'erreur explicite de type int main() puisque c'est un void main().

    Et en exécuatnt en debug, il me dit que ça sort avec un code 44.
    Comment ça se fait, c'est quoi ce 44?

    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    ? (c'est peut-être une question bête mais que voulez-vous, j'aimerais savoir d'où ça vient)

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Il n'y pas grand chose à dire, la norme du C dit explicitement que seules les signatures suivantes sont correctes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main (void)
    int main (int argc, char ** argv)
    /* ou */
    int main (int argc, char *argv[])
    Etant donné que main retourne un int il n'est donc pas possible qu'elle renvoie (pour ainsi dire) void !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par stof
    Et en exécuatnt en debug, il me dit que ça sort avec un code 44.
    Comment ça se fait, c'est quoi ce 44?
    Surement que ton compilateur mais implicitement int au lieu de void car il faut qu'un programme renvoie une valeur, c'est une valeur utilisée par le système sous-jacent donc essentiellement et plus précisément, l'ordonnanceur des processus qui fait une action précise par rapport au code de sortie d'un programme !

    Quant aux valeur, là il faut te renseigner sur éventuellement la référence ou guide du développeur par rapport à ton système, en l'occurence je dirais MSDN vu que tu est sous Windows car les valeurs sont spécifiques à l'implémentation
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    OK Merci.

    Donc void main (...), c'est mal.

    Je ne savais pas que même quand on a rien à retourner, ça pouvait avoir des conséquences comme ça.

    Je suis sous Windows effectivement (sous NT même pour l'instant).

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Pour un void main(), le code de retour peut être n'importe quoi.
    Sur un programme DOS de ma composition, le retour était le résultat de ma dernière fonction appelée (un printf) --> Donc, le nombre de caractères imprimés.
    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.

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par stof
    Je ne savais pas que même quand on a rien à retourner, ça pouvait avoir des conséquences comme ça.
    main retourne "toujours" une valeur, par défaut 0 ou EXIT_SUCCESS (pour plus de portabilité) si le programme se termine normalement auquel cas, l'ordonnanceur termine simplement le processus, là encore le comportement dépend fortement de l'implémentation je n'entrerais donc pas dans les détails
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. [Mail] codes de retour email
    Par drommk dans le forum Langage
    Réponses: 8
    Dernier message: 26/06/2006, 14h53
  2. sqlldr code de retour 137
    Par thunderblade dans le forum Oracle
    Réponses: 9
    Dernier message: 18/04/2006, 13h55
  3. DELPHI6, Programme console et code de retour
    Par Desraux dans le forum Débuter
    Réponses: 2
    Dernier message: 21/07/2005, 08h15
  4. [Debutant(e)] Code de retour de mon programme
    Par benji999 dans le forum Général Java
    Réponses: 2
    Dernier message: 10/12/2004, 13h15
  5. [Débutant]#entre int main & void main
    Par Binga dans le forum C
    Réponses: 9
    Dernier message: 10/08/2004, 15h54

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