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 :

Erreurs qui apparaissent en compilation separe


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 77
    Par défaut Erreurs qui apparaissent en compilation separe
    Bonjour,

    J'essaie de me creer ma propre librairie avec toutes mes petites fonctions assez simples.

    J'ai fait un fichier.c avec un bonne partie de ces fonctions (dont celles concernees dans la suite du topic) et le code fonctionne tres bien, je n'est aucun warning.

    Mais quand je les ai toutes dissocies pour les compiles en .o j'ai le message d'erreur warning: assignment makes pointer from integer without a cast sur 2 fonctions, pourtant tres simples:

    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
     
    #include <stdlib.h>
    #include <unistd.h>
    char            **cpytab(char **src, int y_d, int y_f)
    {
      char         **dest = NULL;
      int           y;
     
      if (y_f == -1)
        y_f = len_table(src);
      dest = xmalloc(((y_f - y_d) + 1) * sizeof(*dest));
      y = 0;
      while (y_d < y_f)
        {
          dest[y] = malloc((my_strlen(src[y_d]) + 1) *  sizeof(**dest));
          my_strcpy(dest[y++], src[y_d++]);
        }
      dest[y] = NULL;
      return (dest);
    }
    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
     
    #include <stdlib.h>
    #include <unistd.h>
     
    char            **side(char **tab, char **epur)
    {
      int           y_t;
      int           y;
      int           flag_d;
      int           flag_f;
      int           lim;
      char          **tab_clean = NULL;
     
      flag_d = is_it_in_epur(tab[0], epur);
      y_t = len_table(tab) - 1;
      lim = y_t + 1;
      if ((flag_f = is_it_in_epur(tab[y_t], epur)) == 1)
        lim = y_t;
      tab_clean = cpytab(tab, flag_d, lim); /*erreur ici, qui part si j'enleve l'assignation, pourtant ce n'est pas une erreur de return value, j'ai du mal a comprendre...*/
      free_double_table(tab, NULL);
      return (tab_clean);
    }
    Ca doit etre bidon mais je tourne en rond, aussi, je ne veux pas envoyer l'adresse du char **, mais utiliser le return, car pour une libraire c'est quand meme plus propre, merci de m'eclairer ! Bonne journee.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 486
    Par défaut
    Si tu compiles tes sources de manière séparée, alors le compilateur ne connaît pas a priori les fonctions que tu appelles et ne peut pas deviner non plus qu'elles sont définies dans le fichier d'à côté. Il te signifie ce fait par « implicit declaration of function ‘cpytab’ ».

    Et, une fois, que c'est fait, il considère par défaut que la fonction est de type int. Lorsque tu affectes sa valeur à ton pointeur, il détecte une discordance entre les types (entier d'un côté, pointeur de l'autre) et te le dit aussi.

    Si tu veux te référer à des fonctions externes qui seront liées plus tard à l'ensemble de ton projet, il faut au moins préciser le prototype de ta fonction, sous la forme de l'entête de la fonction (type, nom et paramètres) mais sans le code. Typiquement, ces prototypes prennent place dans un fichier *.h propre à ta bibliothèque et inclus par toutes les parties de codes qui peuvent se référer aux fonctions qui y sont déclarées.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 77
    Par défaut
    Oui je viens de faire avec un .h et en effet ca fonctionne...

    Je pensais que la compilation séparée etait un peu plus autonome je l'utilise jamais...

    Merci pour ta reponse, meme si j'ai poste un peu trop vite...

    Bonne journee !

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 486
    Par défaut
    Citation Envoyé par student_ Voir le message
    Je pensais que la compilation séparée etait un peu plus autonome je l'utilise jamais...
    En fait, il faut juste se souvenir que le langage C est totalement indépendant du système de fichier, même s'il y a quelques conventions au niveau de celui-ci.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/09/2008, 12h23
  2. erreur lors de la compilation
    Par ksoft dans le forum MFC
    Réponses: 2
    Dernier message: 02/05/2006, 15h40
  3. Réponses: 11
    Dernier message: 02/05/2006, 13h16
  4. Réponses: 4
    Dernier message: 22/02/2006, 14h11
  5. Erreur avec Glibc en compilation croisée
    Par Senaku-seishin dans le forum Linux
    Réponses: 2
    Dernier message: 02/12/2005, 14h12

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