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 :

Conflicting type error


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Par défaut Conflicting type error
    Bonjour à tous,

    voila mon bout de code, je fais des essaies :
    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 <stdio.h>
    #include <stdlib.h>
     
    void    abs(int *);
     
    int     main(int argc, char **argv)
    {
      int   i = -10;
      int   *p_int;
     
      p_int = &i;
      abs(p_int);
      printf("p_int = %d\n", *p_int);
     
      return 0;
    }
     
    void    abs(int* p)
    {
      *p = (unsigned int) *p;
    }
    Qui me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    main.c:4:6: erreur: conflicting types for ‘abs’                              
    main.c:18:6: erreur: conflicting types for ‘abs’
    Mais je ne vois pas où est la faute. Il est possible que le code soit mauvais, mais c'est juste que je ne comprends pas le conflicting type alors que les déclarations sont biens faites (il me semble ) et que le prototype est également bon.

    Merci de votre aide.

  2. #2
    Membre émérite
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Par défaut
    Il existe déjà une fonction abs(), change simplement le nom de ta fonction.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Par défaut
    Merci bien, je ne savais pas. Problème résolu !

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void    abs(int* p)
    {
      *p = (unsigned int) *p;
    }
    Si le but de ta fonction est de calculer la valeur absolue, tu auras des surprises.

  5. #5
    Membre éclairé Avatar de aslo92
    Homme Profil pro
    Ingénieur développement logiciels temps réel
    Inscrit en
    Février 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels temps réel
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 43
    Par défaut
    Si ta fonction abs était sensée retourner la valeur absolue du contenu de ton pointeur, ça ne marchera pas.

    Si tu cast -1 en unsigned int tu obtiendras 4294967295 au lieu de 1.
    Pour retourner la valeur absolue, ta fonction doit être écrite comme ça:

    void my_abs(int* p)
    {
    if (*p < 0)
    *p = -(*p);
    }

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

Discussions similaires

  1. Conflicting types dans fonction déclarée
    Par Spikeuh dans le forum C
    Réponses: 8
    Dernier message: 22/06/2008, 17h49
  2. Réponses: 4
    Dernier message: 21/01/2008, 22h35
  3. Type Error : _items has no properties
    Par gronono dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/11/2007, 11h23
  4. [OBJET] - non-aggregate type error
    Par jacquesh dans le forum C++
    Réponses: 3
    Dernier message: 28/04/2006, 13h49
  5. conflicting types
    Par semaj_james dans le forum C
    Réponses: 3
    Dernier message: 28/11/2005, 12h10

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