Bonjour,
je viens de voir dans un vieux programme (fonctions style K&R) quelque chose qui m'intrigue.

Il y a plusieurs fichiers .c et .h

dans les fichiers .c, la définition de certaines fonctions est précédé du mot public :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
    public int
search(search_type, pattern, n)
    int search_type;
    char *pattern;
    int n;
{
 
   /* code */
}
J'ai d'abord pensé que public était un mot réservé du langage C, mais en fait non.

Dans un fichier .h il y a la directive suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
#define public      /* PUBLIC FUNCTION */
et un autre fichier .h contient la liste de toutes les fonctions précédées de ce mot public :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
...
    public int search ();
...
Ces fonctions sont celles qui sont utilisées dans d'autres fichiers que celles où elles ont été définies.

Quelqu'un pourrait m'expliquer l'astuce ?

Notamment le fait qu'on puisse déclarer
#define unmot
je croyais qu'on devait obligatoirement quelque chose du style :
#define unmot valeur

D'autre part, sur le fait qu'on peut rajouter des mots clés aléatoires? avant la définition d'une fonction

merci d'avance.
arno