Index des articles > Programmation > Tutorial TIGCC - Chapitre 3 - Fonctions - Headers

Tutorial TIGCC - Chapitre 3 - Fonctions - Headers

Article posté par limmt

Chapitre 3 - Fonctions - Headers

A - Fonctions

I) Définition simple

Vous avez vu que la fonction _main est définie comme ceci:

void _main(void)
{
   instructions;
}


Pour déclarer vos propres fonctions, ils faut fire exactement pareil (en dehors de la fonction main):

void nom_fonction(void)
{
   instructions_de_la_fonction;
}


Ceci créera une fonction nom_fonction sans arguments qui ne renvoie rien.
Pour l'exécuter dans votre programme, il suffit de faire:

nom_fonction();

Il est bien entendu possible d'exécuter une fonction à partir d'une autre fonction ou même d'appeler une fonction à partir d'elle même.

II) Passer des arguments à une fonction

Pour permettre au programme de passer des arguments à une fonction, quand vous déclarez la fonction vous définissez son prototype, il est donc possible d'y inclure des arguments:
void nom_fonction(short nom_argument)
{
   instructions_de_la_fonction;
}


Ceci déclarera la fonction nom_fonction comme ne renvoyant rien et prenant un argument de type short. Dans les instructions de la fonction, nom_argument prendra la valeur passée en argument.
Pour déclarer plusieurs arguments, il faut les séparer par une virgule. Il est possible de définir des argument de n'importe quel type de variables.
Il est possible de passer des listes à une fonction en argument.

III) Renvoyer une valeur

Certaines fonctions de la TIGCCLIB que vous avez vues renvoyaient une valeur. Il est possible de faire de même, dans ce cas, au lieu de mettre void avant le nom de la fonction, vous mettez le type de valeur que vous souhaitez renvoyer.
Exemple de fonction renvoyant un unsigned char et ne prenant pas d'arguments:

unsigned char nom_fonction(void)
{
   instructions_de_la_fonction;
   return valeur;
}


Remarque: le void entre les parenthèse n'est pas obligatoire.
! Si vous définissez une fonction renvoyant une valeur, il faudra impérativement en renvoyer une.
L'instruction return permet de renvoyer une valeur de n'importe quel type.

Exemple:
Fonction renvoyant aléatoirement TRUE ou FALSE:

short aleat()
{
   if(rand()<=16383)
      return TRUE;
   else
      return FALSE;
}


rand() est une fonction renvoyant un nombre aléatoire entre 0 et RAND_MAX (32767).
! Il est évidemment possible de créer une fonction prenant des arguments et renvoyant une valeur, cependant une fonction ne peut pas renvoyer de liste.

B - Headers

I) Qu'est ce qu'un header?

Un header est un fichier de projet avec une extension ".h".
Il permet d'y mettre des fonction ou des déclaration préliminaires pour simplifier la compréhension du code.
Il est également utilisé pour les librairies statiques comme nous le verrons plus tard.

II) Création d'un fichier header

Pour créer un nouvel header pour le projet en cours allez dans File - New - C Header File.
Vous pouvez ensuite choisir le nom du header
Dans le fichier principal (*.c) vous devez inclure le header, de préférence juste après l'inclusion du header de la TIGCCLIB, si vous voulez pouvoir utiliser les fonctions de la TIGCLIB dans les fonctions de votre header.
Vous devez tout simplement mettre:

#include "nom_header.h"

Cela incluera le contenu du header dans le programme.

III) Fonctions et variables dans le header

Pour définir une fonction dans un header il faut faire exactement pareil que si vous la déclariez dans le fichier principal.
Vous pouvez exéctuer une fonction du header depuis une autre, cepandant uniquement APRÈS la déclaration de cette fonction.
Vous voudrez suremùent dans vos programme utiliser une variable partout même dans les fonctions (variable globale). IL n'est pas nécessaire pour cela de la passer en argument d'une fonction.
Il est recommandé de la déclarer en dehors d'une fonction avant toute déclaration, soit au début du fichier principal avant l'inclusion des headers ou auy début d'un header.
Si vous en utilisez beaucoup (IE pour un gros programme), il est conseillé de créer un header spécialement pour les variable globales, qui serront utilisables par leur nom dans toute fonction du programme.


Limmt Ribeman © 2004

>> Vos commentaires [0]

Pas de commentaires

Poster un commentaire


Seuls les membres peuvent poster des commentaires