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 :

problème de warning


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut problème de warning
    Bonjour,
    Voici un petit problème de warning apparemment pas grave mais qui m'agace. Dans le petit code suivant :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    void main() {
        int i;
        double *dF1;
     
        dF1 = (double*)malloc(4*sizeof(double));
    dF1[0]=0.0;
    dF1[1]=0.5;
    dF1[2]=1,5;
    dF1[3]=2,5;
    for (i=0;i<=3;i++) fprintf("dF1[%d]=%e \n",i,dF1[i]);
     
    return;
    }
    J'obtiens ce warning :

    warning line 5 : 'return type of main is not int'

    Qui saurait m'expliquer pourquoi ?

    L.

  2. #2
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Bonjour,

    C'est parce que tu as déclaré ton main en tant que void, remplace le par int et le warning ne s'affichera plus.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut réponse à olivier
    si ma fonction ne retourne rien, (j'indique : return; à la fin), je ne peux pas mettre 'int main' !
    D'ailleurs lorsque je le fait, j'ai le warning suivant :
    "return with no value, in function returning non-void".

    ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    si ma fonction ne retourne rien, (j'indique : return; à la fin), je ne peux pas mettre 'int main' !
    La fonction main doit renvoyer une valeur, de type int.
    La norme C indique que la valeur retour doit être :
    _ 0 ou EXIT_SUCCESS si le programme se termine normalement.
    _ EXIT_FAILURE si le programme a échoué.

    Les autres valeurs ne sont pas standard.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dF1[0]=0.0;
    dF1[1]=0.5;
    dF1[2]=1,5;
    dF1[3]=2,5;
    C'est quoi, ces virgules ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 124
    Par défaut Réponse à mabu
    Bonjour et merci de la réponse !

    OK donc le code doit être avec "int main() " en début et "return 0" à la fin. (les virgules c'était effectivement une petite erreur de frappe). Effectivement plus de warning !

    J'ai tout de même une question : quelle sera la différence si j'écris "return 0" ou "return 1" ?

    Cdlt

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 60
    Par défaut
    Bonjour,

    Pour ton code à proprement parlé, il n'y aura aucune différence. Mais si ton code est destiné à être utilisé par d'autres, ou dans un script, un code de retour égal à '1' pourra être interprété comme une erreur.

    Par exemple, en bash, la commande cmd1 sera lancée dans le test suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if [[ condition ]]; then
    cmd1
    fi;
    si la condition s'évalue à '0'...

Discussions similaires

  1. Problème avec Warning: constant()
    Par HwRZxLc4 dans le forum Langage
    Réponses: 8
    Dernier message: 10/10/2007, 08h24
  2. problème de Warning: file_get_contents()
    Par osseili20 dans le forum Langage
    Réponses: 1
    Dernier message: 01/06/2007, 11h35
  3. Problème de warning : unused variable .
    Par Clad3 dans le forum C
    Réponses: 9
    Dernier message: 24/01/2007, 16h53
  4. problème de warning en compilant win32 + directx
    Par madcode dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 17/10/2006, 16h58
  5. [J2SE1.5] Problème de warning
    Par yakanet dans le forum Langage
    Réponses: 6
    Dernier message: 02/01/2006, 14h15

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