Types en conflit en C

J’essayais de créer un programme très simple en C qui renvoie une valeur flottante à partir d’une fonction, mais pour une raison quelconque, j’ai reçu une erreur.

#include int main(){ double returning; returning = regre(); printf("%f", returning); return 0; } double regre(){ double re = 14.35; return re; } 

L’erreur que je reçois dit:

types contradictoires pour ‘regre’

déclaration implicite précédente de regre était ici

Ce message d’erreur vous dit exactement ce qui se passe – il y a une déclaration implicite de regre parce que vous ne le définissez pas avant main() . Ajoutez simplement une déclaration avant:

 double regre(); 

Avant main() , ou déplacez simplement la fonction entière vers le haut.

 previous implicit declaration of `regre` was here 

Si une fonction est inconnue, le compilateur la considère par défaut comme int functionname() . Dans votre cas, int regre() sera déclaré ici.

 conflicting types for 'regre' 

Lorsque votre fonction réelle double regre() est détectée, cette erreur de conflit se produit. Pour résoudre ce problème, la fonction double regre () doit être déclarée avant son utilisation réelle.

 #include double regre(); //Forward Declaration int main(){ double returning; returning = regre(); printf("%f", returning); return 0; } double regre(){ double re = 14.35; return re; } 

Pour plus d’informations sur la déclaration anticipée, reportez-vous au lien suivant.

http://en.wikipedia.org/wiki/Forward_declaration

En C, chaque fois que vous utilisez une fonction appel par valeur ou appel par référence, ces fonctions sont par défaut de type int. Lorsque vous utilisez une fonction qui en est le type, vous devez définir le prototype de la fonction dans le programme avant d’appeler cette fonction. La meilleure façon de faire consiste simplement à définir tout le prototype de fonction avant le principal, c’est-à-dire le bon moyen de programmation. En entrant dans votre programme, définissez simplement le prototype en tant que double regre (); avant la principale

 double regre(); main() {