Le fichier .h (ou carte h / header file) doit être référencé dans le fichier .c
Il comprend des instructions exécutées par le pré-processeur lors de la compilation.
Pour voir le resultat de la pre-compilation, utiliser cpp
. Cela permet d'avoir acces au source tel qu'il sera en phase de compilation.<\p>
#ifndef MON_PGM_H # define MON_PGM_H ... # endif
Cette portion de code montre la creation d'une variable MON_PGM_H dans le cas ou cette dernière n'existe pas. Si elle existe, le pre-processeur saute directement à la fin du fichier.
Donc tout ce qui se trouve à la place des ... ne sera exécuté qu'une seule fois!
Par convention, la forme est toujours nom du fichier .h, ici mon_pgm.h en majuscule suivi d'un _H donc MON_PGM_H
.
...
Même fonction que ce qui est dans le fichier .c
# include <pthread.h> # include <sys/time.h> # include <stdio.h> # include <stdlib.h> # include <unistd.h> # include "./libft/libft.h"
Bien respecter l'espace entre le # et le include !
La variable définie ci-après sera remplacée par son contenu dans le code par un mécanisme proche du rechercher/remplacer.
# define VARIABLE "Ceci est le texte a imprimer.\n" # define VAR2(x) "Debug de la valeur %d\n",x // DEBUG en cours si valeur = 1 # define DEBUG 1
La variable est par convention en majuscules est s'utilise de cette façon dans le code
int varnum; varnum = 5 printf(VARIABLE); if (DEBUG = 1) printf(VAR2(varnum):
Ce qui donne comme resultat
Ceci est le texte a imprimer. Debug de la valeur 5
La création d'un type de variable permet de généraliser la définition de variables.
typedef int * int_pointer;
L'avantage d'une structure est de regrouper un certain nombre de variables et de pouvoir les utiliser en parametre de retour.
typedef struct s_proc { pthread_mutex_t *forks_mut; char *forks; int n_philo; t_param param; } t_proc;
le prototype de fonction est obligatoire si l'appel s'effectue d'un fichier main.c ver un autre fichier, p. exemple init.c. C'est une copie de la définition de la fonction close par un ;.
int init_process(char type, int proc);