> Tous les forums > Forum Autres langages
 Declaration de fonctions en CSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
jindono
  Posté le 13/04/2006 @ 17:00 
Aller en bas de la page 
Nouvel astucien
Bonjour à tous :) je suis nouveau sur ce forum et j'aimerais savoir comment declarer et définir des fonctions qui se définissent mutuellement exemple: f() { . . g() . . . } et g() { . . . f() . . } ??????? Merci d'avance...
Publicité
koala01
 Posté le 13/04/2006 à 22:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, En C, une fonction se définit par deux choses: -son prototype -son implémantation Le prototype est, simplment, la définition du nom de la fonction en indiquant la valeur de renvoi et les arguments éventuelles… Il faut savoir que, en C, seul ce qui a déjà été lu est connu du compilateur… C'est la raison pour laquelle, si des fonctions doivent s'appeler l'une l'autre, il faut commencer par indiquer leurs prototypes… En gros, si tu crées un code du genre de [code] void f(void) { //n'importe quoi } void g(void) { f(); } void main(int argc, char *argv[]) { g(); f(); }[/code] cela fonctionnera, car, quand tu implémante g(), f() est déjà connue du compilateur… Si, par contre, f() doit, à un moment donné appeler g() et que g() doit, lui-aussi à un moment donner appeler f(), il faudra commencer par le prototype pour que le compilateur accepte les différents appels… A ce moment là, il faudra utiliser un code du genre de [code] void f(void); void g(void); void f(void) { if(n'importe quoi) { g(); } else { autre chose; } } void g(void) { if(n'importe quoi) { f(); } else { autre chose; } } void main(int argc, char *argv[]) { g(); f(); }[/code] Les deux premières lignes suffiront donc à faire connaitre les fonctions f() et g() à tout le reste du programme (pour le compilateur, en réalité) Il est à noter que, si en C++, tu peux simplement ne rien mettre dans le prototype d'une fonction qui ne prend pas d'arguments, il est en revance IMPERATIF de signaler que la fonction n'en prend pas en C en placant le mot cle void [clindoeil] Est-ce que tout cela te parrait clair [question]
jindono
 Posté le 13/04/2006 à 22:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien
Limpide mon cher [smile] j'ai fait comme tu as dit et ça a marché.. while(1) { printf("Merci infiniment!"); } [smile]

Modifié par jindono le 13/04/2006 22:19
koala01
 Posté le 13/04/2006 à 22:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Une petite précision: L'une des habitudes qui est toujours utiles à prendre en C, c'est de placer les prototypes de toutes les fonctions que tu crées en début de programme (la seule exception étant pour la fonction main). Cela ne demande pas tellement de temps; normalement ca n'augmente pas la taille de l'exécutable, et, au moins, tu seras sur de ne pas avoir de problèmes sur l'ordre d'apparition des différentes fonctions (vu que toutes les fonctions seront déclarées au compilateur en leur fournissant leurs prototypes). Personnellement (mais ce n'est qu'une petite manie perso), quand je code en C, je place tous les protoypes des fonctions que je crées, et je place leurs implémentations apres la fonction main, mais, rien ne t'empeche, justement, de mettre toutes les fonctions avant la fonction main, ou partie avant, partie apres [clindoeil]

Modifié par koala01 le 13/04/2006 22:50
bebe en detresse
 Posté le 15/04/2006 à 16:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Je suis entièrement daccord avec koala, les fonction son globales mais sa permet de ne pas oublier ou d'avoir des problemes pour l'inisialisations des fonction. Je vous souhaite une exelente journée [bigsmile] ne pas oublier if (bebe en detresse != meilleure) return ERROR;
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
64,48 €Ecouteurs intra-auriculaires sans fil Bluetooth Jabra Elite 65t à 64,48 € livrés
Valable jusqu'au 07 Mai

Amazon Allemagne fait une promotion sur les écouteurs intra-auriculaires sans fil Bluetooth Jabra Elite 65t qui passent à 59,50 € (avec la TVA ajustée). Comptez 4,98 € pour la livraison en France soit un total de 64,48 € livrés. On les trouve ailleurs à partir de 100 €. Pensés pour vous permettre de vivre votre musique comme vous l'entendez et pour assurer des conversations d'une grande clarté, les écouteurs Jabra Elite 65t ont tout pour vous séduire ! Côté son, l'égaliseur personnalisable vous permet d'ajuster le rendu sonore tandis que la technologie avancée à quatre microphones supprime les bruits de fond lors des appels pour des conversations limpides. Au quotidien, ces écouteurs Jabra restent parfaitement en place et proposent même une fonction de commande vocale simplifiée. Enfin, vous apprécierez les 5 heures d'autonomie avec une seule charge, qui se transforment en 15 heures avec l'étui de recharge compact.  Le Jabra Elite 65t est certifié IP55 et offre une garantie de 2 ans contre l’humidité et la poussière. Où que vous soyez et quelle que soit votre activité, vous profitez d’une liberté absolue pour les appels et la musique. 

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douane.


> Voir l'offre
39,62 €Lot de 5 Câbles RJ45 Cat6 UTP KabelDirekt - 5x 30M, Gigabit/LAN à 39,62 €
Valable jusqu'au 07 Mai

Amazon fait une belle promotion sur le lot de 5 câbles gigabit RJ45 Cat6 UTP KabelDirekt de 30 mètres chacun à 39,62 € livré gratuitement au lieu de 66 €. Les câbles sont particulièrement flexibles et donc pratiques à poser – sans crainte des interférences grâce à la technique à paire torsadée (Twisted-Pair). Pour des transferts de données jusqu’à 1000 Mbit/s (1000Base-T)


> Voir l'offre
39,92 €Haut-parleurs Bluetooth Logitech Z207 à 39,92 €
Valable jusqu'au 07 Mai

Amazon fait une promotion sur les haut-parleurs bluetooth Logitech Z207 qui passent à 39,92 € livrés gratuitement alors qu'on les trouve ailleurs à partir de 50 €. Vous pouvez connecter ces haut-parleurs 10W à votre ordinateur, votre appareil mobile via une connexion sans fil bluetooth. Une entrée 3,5 mm est présente ainsi qu'un bouton de volume. 


> Voir l'offre

Sujets relatifs
Ameliorer le Main "Java" avec les fonctions & procédures
Fonctions logarithmique VB5
Fonctions mathématique VB5
passage de tableaux en variable dans les fonctions
besoin d'explication pour des fonctions en C
declaration de variable 'oui mais quoi)
 > Tous les forums > Forum Autres langages