OVH Cloud OVH Cloud

Bonne pratique concernant les en-têtes

12 réponses
Avatar
Thoma
Bonjour,

Eternelle d=E9butant, je cherche =E0 savoir lequel des deux cas ci-dessous
est =E0 pr=E9f=E9rer et pourquoi ?

Cas 1:
----------------------------------- file1.h
------------------------------------
#ifndef __FILE1_H__
#define __FILE1_H__

typedef struct container
{
struct container * prev;
struct container * next;
content * ptr;
} container;

#endif /* __FILE1_H__ */
----------------------------------- file2.h
------------------------------------
#ifndef __FILE2_H__
#define __FILE2_H__

typedef
{
size_t size;
void * ptr;
} content;

#endif /* __FILE2_H__ */
---------------------------------- example.c
-----------------------------------
#include "file2.h"
#include "file1.h"

int main(int argc, char * argv[])
{
...
}

Cas 2:
----------------------------------- file1.h
------------------------------------
#ifndef __FILE1_H__
#define __FILE1_H__

#include "file2.h"

typedef struct container
{
struct container * prev;
struct container * next;
content * ptr;
} container;

#endif /* __FILE1_H__ */
----------------------------------- file2.h
------------------------------------
#ifndef __FILE2_H__
#define __FILE2_H__

typedef
{
size_t size;
void * ptr;
} content;

#endif /* __FILE2_H__ */
---------------------------------- example.c
-----------------------------------
#include "file1.h"

int main(int argc, char * argv[])
{
...
}

En d'autres termes, dans un projet d=92envergure, doit-on minimiser le
nombre d=92appel =E0 des fichiers d=92en-t=EAte dans les fichiers d=92en-t=
=EAtes
(et ce sont les d=E9veloppeurs qui sont responsable de l=92ordre d=92appel
des fichiers d=92en-t=EAte) ? Ou bien, g=E9rer les d=E9pendances entre
fichiers d=92en-t=EAte (et minimiser le nombre d=92appel =E0 des fichiers d=
=92en-
t=EAte dans les fichiers sources) ?

D'avance merci

Thoma

2 réponses

1 2
Avatar
candide
Richard Delorme a écrit :

Le bon paragraphe est le 7.1.3 :
[...]
— All identifiers that begin with an underscore and either an uppercase
letter or another underscore are always reserved for any use.
— All identifiers that begin with an underscore are always reserved for
use as identifiers with file scope in both the ordinary and tag name
spaces.



Tout à fait. Et il est donc abusif, ainsi que le disait -ed-, d'affirmer :


"L'usage des identificateurs commençant par _ est réservé à l"implémentation."
Avatar
Richard Delorme
Le 16/09/2009 23:02, candide a écrit :
Richard Delorme a écrit :

Le bon paragraphe est le 7.1.3 :
[...]
— All identifiers that begin with an underscore and either an uppercase
letter or another underscore are always reserved for any use.
— All identifiers that begin with an underscore are always reserved for
use as identifiers with file scope in both the ordinary and tag name
spaces.



Tout à fait. Et il est donc abusif, ainsi que le disait -ed-, d'affirmer :


"L'usage des identificateurs commençant par _ est réservé à l"implémentation."



Dans la mesure ou « implémentation » ne fait pas partie du vocabulaire
français, oui, c'est abusif d'employer ce terme. Néanmoins, le contexte
établit clairement que l'usage de ces identificateurs est réservé à la
bibliothèque et en particulier aux entêtes (début du § 7.1.3 que je n'ai
pas cité).

--
Richard
1 2