syntaxe pour compilation conditionnelle ?
Bonjour,
Je voudrais savoir quel est la syntaxe exacte lorsqu'on veut éviter les inclusions multiple de fichier. J'ai en effet vu plusieurs versions.
exemple pour un fichier : fichier.h
Code:
1 2
| #ifndef FICHIER_H
#define FICHIER_H |
ou encore
Code:
1 2
| #ifndef _FICHIER_H_INC
#define _FICHIER_H_INC |
ou bien alors
Code:
1 2
| #ifndef __FICHIER__
#define __FICHIER__ |
Je ne sais donc pas quel est la bonne syntaxe à adopter ni quel est la
signification (s'il y en a une) au niveau de la position des underscores.
Pour l'instant j'utilise la syntaxe du 1er exemple (qui me parait + logique)
mais si quelqu'un pouvait m'expliquer les raisons de toutes ces différentes syntaxes ce serait sympa ;-)
Merci
Tintin72
Re: syntaxe pour compilation conditionnelle ?
Citation:
Envoyé par tintin72
Je voudrais savoir quel est la syntaxe exacte lorsqu'on veut éviter les inclusions multiple de fichier. J'ai en effet vu plusieurs version.
exemple pour un fichier : fichier.h
Code:
1 2
| #ifndef FICHIER_H
#define FICHIER_H |
Bien mais
Code:
1 2 3
|
#ifndef H_FICHIER
#define H_FICHIER |
est encore mieux.
http://emmanuel-delahaye.developpez....nom_underscore
http://emmanuel-delahaye.developpez....ganiser_source
Re: syntaxe pour compilation conditionnelle ?
Citation:
Envoyé par Emmanuel Delahaye
Bien mais
Code:
1 2 3
|
#ifndef H_FICHIER
#define H_FICHIER |
est encore mieux.
Je te crois, mais il y a une raison objective pour vouloir mettre le "H_" devant ? Personnellement, j'utilise
qui a recemment remplace le trop long
Code:
1 2
|
#ifndef FICHIER_INCLUDED |
Et je ne vois rien de reprehensible la-dedans...
Re: syntaxe pour compilation conditionnelle ?
Citation:
Envoyé par DaZumba
Citation:
Envoyé par Emmanuel Delahaye
Bien mais
Code:
1 2 3
|
#ifndef H_FICHIER
#define H_FICHIER |
est encore mieux.
Je te crois, mais il y a une raison objective pour vouloir mettre le "H_" devant ?
Oui, c'est pour éviter
Code:
1 2 3
| /* err.h */
#ifndef ERR_H
#define ERR_H |
qui briserait la regle qui dit que les identificateurs commençant par E suivi d'une majuscule sont réservées à l'implémentation. (Les constantes 'erreurs', précisément, c'est à dire les valeurs définies de errno).
- Certains sont définies par le langage C
- D'autres par POSIX.1
- D'autres enfin par le compilateur (à éviter pour des problèmes de portabilité).
Re: syntaxe pour compilation conditionnelle ?
Citation:
Envoyé par Emmanuel Delahaye
(...) qui briserait la regle qui dit que les identificateurs commençant par E suivi d'une majuscule sont réservées à l'implémentation.
J'ignorais cette regle. Merci pour cela !