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

  1. #1
    Futur 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
    Points : 7
    Points
    7
    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 éprouvé
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Points : 1 081
    Points
    1 081
    Par défaut
    Il existe déjà une fonction abs(), change simplement le nom de ta fonction.
    Si vous ne savez toujours pas ce qu’est la récursivité, relisez cette phrase.

    Mon blog sur la programmation et l'informatique !

  3. #3
    Futur 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
    Points : 7
    Points
    7
    Par défaut
    Merci bien, je ne savais pas. Problème résolu !

  4. #4
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    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.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Membre régulier 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
    Points : 71
    Points
    71
    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