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 sur ma structure.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 118
    Par défaut Erreur sur ma structure.
    Bonjour,

    Mon compilateur m'affiche une erreur lors de l'assignation de ma structure, voila tout le 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    #include "my_ls.h"
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <time.h>
    #include <stdio.h>
    #include <dirent.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <pwd.h>
    #include <grp.h>
     
    int             recup_data(char *directory)
    {
      DIR           *dirp;
      struct dirent *entry;
      list_t        *list;
      list_add      info;
      time_t        time;
      struct stat   sb;
      struct passwd *user;
     
      list = NULL;
      if ((dirp = opendir(directory)) == NULL)
        return (-1);
      while ((entry = readdir(dirp)) != NULL)
        {
          stat(entry->d_name, &sb);
          user = getpwuid(sb.st_uid);
          time = sb.st_mtime;
          my_putstr(entry->d_name);//j'ai tésté d'affiché les valeur et elle s'affiche bien.
          my_putstr(ctime(&time));
          my_putstr(user->pw_name);
          my_put_nbr(sb.st_size);
          info = add_info(entry->d_name, ctime(&time), user->pw_name, sb.st_size);//Si je ne met pas de info = mon code compile.
          add_list(&list, info);
        }
    }
     
    list_add                add_info(char *name, char *time, char *user, int octet)
    {
      list_add              new;
     
      new.name = name;
      new.time = time;
      new.user = user;
      new.octet = octet;
      return (new);
    }
     
    typedef struct list_s list_t;
    typedef struct list_add list_add;
    typedef struct param param;
     
    struct          list_s
    {
      char                  *name;
      char                  *time;
      char                  *user;
      int                   octet;
      list_t                *next;
    };
     
    struct          list_add
    {
      char                  *name;
      char                  *time;
      char                  *user;
      int                   octet;
    };
     
    struct          param
    {
      char                  letter;
      int                   flag;
    };
    Mon compilateur m'affiche l'erreur suivante :
    error: incompatible types when assigning to type ‘list_add’ from type ‘int’
    a la ligne 35.

    Merci.

  2. #2
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Bonjour

    "classiquement" (je ne suis pas en détail les nouvelles normes), une fonction est supposée retourner un int si on n'a pas son prototype.

    A la ligne 35, le prototype de add_info n'est pas connu (et donc le compilo ne sait pas qu'elle retourne le type list_add et considère qu'elle retourne un int).

    Et donc, l'affectation d'un int à info, déclarée comme list_add, coince.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 118
    Par défaut
    Merci beaucoup ça venait de la.

  4. #4
    Membre émérite
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Par défaut
    Citation Envoyé par plxpy Voir le message
    "classiquement" (je ne suis pas en détail les nouvelles normes), une fonction est supposée retourner un int si on n'a pas son prototype.
    En tant que simple complément de réponse, l'avis de C99 sur la question. En C99, toute fonction doit être déclarée avant le point d'appel. Cette déclaration (exceptée pour les fonctions variadiques) ne doit pas obligatoirement prendre la forme d'un prototype ; il est toujours légal d'utiliser des abominations telles que :

    Ainsi, la règle du retour implicite en int ne fonctionne plus avec le C99.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

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

Discussions similaires

  1. [Administration] Corriger une erreur de jeunesse sur la structure des repositories
    Par vdaanen dans le forum Subversion
    Réponses: 1
    Dernier message: 10/06/2009, 11h22
  2. [VBS] Erreur sur "AddWindowsPrinterConnection"
    Par Admin dans le forum VBScript
    Réponses: 5
    Dernier message: 27/03/2004, 16h15
  3. Erreur sur serveur lié
    Par k-lendos dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/03/2004, 15h21
  4. []Erreur sur second emploi collection binding
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/03/2004, 18h02
  5. Erreur sur le TNSListener après installation de 9iAS
    Par Patmane dans le forum Installation
    Réponses: 4
    Dernier message: 04/02/2004, 11h16

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