7
votes

C avertissement de types conflictuels

Mon code est

conflicting types for 'doc'


1 commentaires

Vous avez probablement un autre DOC défini quelque part, vérifiez votre inclusion, le message d'erreur doit vous dire où la Déclaration conflictuelle est également.


9 Réponses :


3
votes

Ce n'est clairement pas votre code complet.

Toutefois, cette erreur signifie qu'il existe une autre déclaration pour doc (peut-être une variable globale? Quelque chose dans un fichier d'en-tête?) Ce n'est pas un VOI ne prend aucun paramètre.


1 commentaires

Il peut aussi avoir utilisé la fonction avant sa définition



4
votes

U vous l'avez déclarée avec un autre type / signature et défini avec un autre type / signature.

comme xxx

vous donnera cet avertissement.


0 commentaires

2
votes

"doc" est probablement déjà déclaré avec un type différent ... Vous devriez essayer de trouver la déclaration précédente!


0 commentaires

30
votes

en C, si vous n'avez pas de prototype pour une fonction lorsque vous l'appelez, il est supposé renvoyer un int et pour prendre un nombre non spécifié de paramètres. Ensuite, lorsque vous définissez ultérieurement votre fonction comme retournant void et ne prenant aucun paramètre, le compilateur voit ceci comme un conflit.

En fonction de la complexité de votre code, vous pouvez faire quelque chose d'aussi simple que de déplacer la définition de la fonction avant son utilisation, ou ajoutez la fonction déclaration dans un fichier d'en-tête et y inclure.

Dans tous les cas, l'effet net doit être de faire le prototype de fonction disponible avant qu'il soit utilisé.

si vous ajoutez xxx

avant la fonction Utilisation, vous aurez un prototype visible dans la portée et votre avertissement Vacher.

Je pense que c'est la cause la plus probable de votre avertissement. Vous pouvez avoir une déclaration explicative incompatible de doc dans votre code, mais nous ne pouvons pas le dire car vous n'avez pas posté de code complet.


0 commentaires

2
votes

Vous avez soit déclaré doc avant, ou a apporté un appel à indéterminé doc , forçant ainsi le compilateur à déduire une déclaration de paramètre probable pour doc de cet appel. Maintenant, la définition de doc que vous avez citée est différente de celle de cette déclaration précédente (explicite ou déduite par le compilateur), ce qui est rapporté comme un "conflit".


0 commentaires

2
votes

Assurez-vous que vous n'avez pas utilisé Doc d'où dans votre code!, Je pense que cela ne donne que des problèmes!


0 commentaires

15
votes

Essayez d'écrire votre fonction DOC avant votre fonction principale dans votre fichier de programme.


2 commentaires

Merci! Soin pour expliquer pourquoi est-ce?


Il représente la déclaration avant de la fonction et constitue le prototype de la fonction.



1
votes

Déclarant la fonction au-dessus de l'utilisation qui l'a résolu pour moi.

Exemple: xxx

Comme vous pouvez le voir ci-dessus, l'utilisation de enregistrementAudio () < / code> est ci-dessus où est utilisé.


0 commentaires

0
votes

C'est parce que vous n'avez pas créé de prototype de fonction avant d'appeler la fonction. Donc, le compilateur assume le type de retour comme INT par défaut. Mais lors de la définition de la fonction, vous avez utilisé le type de retour en tant que vide, ce qui est en conflit à une hypothèse complète. C'est pourquoi vous obtenez une erreur types conflictuels pour 'DOC' fort>

Vous pouvez le résoudre en ajoutant un prototype de fonction avant la principale p>

#include <stdio.h>

void doc();

int main()
{
    doc();
}

void doc()
{
      //mycode                
        return;
}


0 commentaires