Bonjour,

Pour mon premier message, je pose un débat pour programmateurs confirmés.

Nous sommes un groupe de programmateurs à travailler sur plein de codes utilisant des bibliothèques communes (et donc des fichiers communs). Nous avons, entre autres, un fichier macros.h qui, comme son nom l'indique, concentre les macros très couramment utilisées.

Le débat est le suivant :

Soit un fichier header toto.h :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
#ifndef _H_TOTO_H_
#define _H_TOTO_H_
 
int fonction1(int a);
 
int fonction2(int a);
 
#endif /* _H_TOTO_H_ */
et son fichier toto.c associé.

Passons au fichier macro.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
#ifndef _H_MACROS_H_
#define _H_MACROS_H_
 
#define SQR(x) ((x) * (x))
 
#define MACRO_1(x) ...
 
#define MACRO_2(x, y) ...
 
#define MACRO_3(x) ...
 
[...]
 
#define MACRO_N(x, y) (fonction1(x) + fonction2(y))
 
#define MACRO_N_PLUS_1(x, y) (fonction1(x) - fonction2(y))
 
[...]
 
#endif /* _H_MACROS_H_ */
Certains de mes collègues pensent que parce que les macros MACRO_N et MACRO_N_PLUS_1 utilisent des fonctions de toto.h, il faut inclure celui-ci dans macro.h.

Personnellement, je pense l'inverse, histoire que le fichier qui utilise ces macros soit obligé de bien mettre en évidence qu'il inclue toto.h et surtout, si certains projets utilisent les autres macros, ils ne doivent pas être obligés de livrer le fichier toto.h s'ils ne l'utilisent pas.

Qu'en pensez-vous ?

Merci par avance pour vos réponses.

--
Olivier