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 :

Souci de Conflicting type


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Points : 9
    Points
    9
    Par défaut Souci de Conflicting type
    Bonjour je codais tranquillement en cette belle journée ensoleillé XD, quand j'ai eu une erreur de "Conflicting type" Ligne 32

    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
    #include <unistd.h>
     
    void	ft_putchar(char c)
    {
    	write(1, &c, 1);
    }
     
    void	ft_print_comb(void)
    {
    	char a;
    	char b;
    	char c;
     
    	a = '0';
    	b = '1';
    	c = '2';
    	ft_comb(a, b, c);
    }
     
    void	ft_print(char a, char b, char c)
    {
    	ft_putchar(a);
    	ft_putchar(b);
    	ft_putchar(c);
    	if (a < '7')
    	{
    		ft_putchar(',');
    		ft_putchar(' ');
    	}
    }
     
    void	ft_comb(char a, char b, char c)
    {
    	if (c < '9')
    	{
    		ft_print(a, b, c);
    		c++;
    		ft_comb(a, b, c);
    	}
    	if (c = '9')
    	{
    		ft_print(a, b, c);
    		b++;
    		c = b+1;
    		ft_comb(a, b, c);
    	}
    	if (b = '8')
    	{
    		ft_print(a, b, c);
    		a++;
    		b = a+1;
    		c = b+1;
    		ft_comb(a, b, c);
    	}
    }
     
    int		main()
    {
    	ft_print_comb();
    	return(0);
    }
    Le but de ce programme est d'afficher les valeur de a,b;c de tel façon a<b<c et sans doublon merci d'avance pour vôtre aide.

  2. #2
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Bonjour,
    ton compilateur n'a pas dû te sortir qu'un «conflicting type» …
    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
    $ gcc -Wall -Wextra -o p p.c
    p.c: In function ‘ft_print_comb’:
    p.c:17:2: warning: implicit declaration of function ‘ft_comb’ [-Wimplicit-function-declaration]
      ft_comb(a, b, c);
      ^~~~~~~
    p.c: At top level:
    p.c:32:6: warning: conflicting types for ‘ft_comb’
     void ft_comb(char a, char b, char c)
          ^~~~~~~
    p.c:17:2: note: previous implicit declaration of ‘ft_comb’ was here
      ft_comb(a, b, c);
      ^~~~~~~
    p.c: In function ‘ft_comb’:
    p.c:40:2: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
      if (c = '9')
      ^~
    p.c:47:2: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
      if (b = '8')
      ^~
    Il y a d'autres erreurs en plus de cela …
    Enfin bref, le conflicting type vient du fait que tu n'utilises pas de prototypes, tout simplement. La première fois que le compilo la rencontre c'est lors d'une utilisation, d'où il déduit que sont type de retour est int (c'est comme ça en C). Ensuite tu la définis et tu lui donnes void comme type de retour → le compilo râle car tu fais n'imp.

    Tu comprends les warnings émis pour les lignes 40 et 47 ???

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Points : 9
    Points
    9
    Par défaut
    Effectivement maintenant que tu en parle je viens de revoir a fond mon code oui beaucoup d'erreur, ça fessais longtemps que j'avais pas codé merci pour les flags avec gcc jm'en repellais plus

    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
    #include <unistd.h>
     
    int		ft_comb(char a, char b, char c);
    void	ft_print(char a, char b, char c);
     
    void	ft_putchar(char c)
    {
    	write(1, &c, 1);
    }
     
    void	ft_print_comb(void)
    {
    	char a;
    	char b;
    	char c;
     
    	a = 48;
    	b = 49;
    	c = 50;
    	ft_comb(a, b, c);
    }
     
    void	ft_print(char a, char b, char c)
    {
    	ft_putchar(a);
    	ft_putchar(b);
    	ft_putchar(c);
    	if (a < 55)
    	{
    		ft_putchar(',');
    		ft_putchar(' ');
    	}
    }
     
    int		ft_comb(char a, char b, char c)
    {
    	if (c > b && c < 57)
    	{
    		ft_print(a, b, c);
    		c++;
    		ft_comb(a, b, c);
    	}
    	else if (c == 57 && b < 56)
    	{
    		ft_print(a, b, c);
    		b++;
    		c = b+1;
    		ft_comb(a, b, c);
    	}
    	else if (b == 56 && a < 55)
    	{
    		ft_print(a, b, c);
    		a++;
    		b = a+1;
    		c = b+1;
    		ft_comb(a, b, c);
    	}
    	else if (a == 55) 
    	{
    		ft_print(a, b, c);
    		return(0);
    	}
    	return(0);
    }
     
    int		main()
    {
    	ft_print_comb();
    	return(0);
    }

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Aussi, utilise STDOUT_FILENO comme descripteur de fichier pour ton write(), plutôt que la valeur magique 1.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Conflicting types et CreateFile()
    Par GodOfTrolls dans le forum Windows
    Réponses: 8
    Dernier message: 11/03/2009, 17h34
  2. pb de conflicting types for
    Par Fahmi06 dans le forum C
    Réponses: 1
    Dernier message: 26/12/2008, 14h26
  3. Conflicting types dans fonction déclarée
    Par Spikeuh dans le forum C
    Réponses: 8
    Dernier message: 22/06/2008, 17h49
  4. petit soucis sur les types
    Par 20100. dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/12/2007, 20h55
  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