Bonjour,
Je lis dans un fichier :
#ifndef EmonLib_h: Je ne comprends pas!
#define EmonLib_h
Merci les spécialistes , de m'éclairer.
Cdt
Georges
Bonjour,
Je lis dans un fichier :
#ifndef EmonLib_h: Je ne comprends pas!
#define EmonLib_h
Merci les spécialistes , de m'éclairer.
Cdt
Georges
Bonjour,
C'est une directive de compilation.
Si EmonLib_h n'est pas chargée alors la charger.
Cela évite les chargements multiples de la même librairie.
@+
#ifndef EmonLib_h: <----- si EmonLib_h nest pas défini
#define EmonLib_h <----- alors définir EmonLib_h
...... <----- autres déclarations
#endif
Utilisé dans les fichier de déclaration d'entête (.h) pour empêcher la double déclaration (qui génère une erreur). Si le fichier a déjà été utilisé par un #include alors EmonLb_h existe déjà et le bloc entre #ifndef et #endif n'est pas traité.
Je vais ajouter le grain de sel de quelqu'un "relativement" récent dans la programmation et qui s'est aussi posé la même question. Mon grain de sel portera sur pourquoi il peut y avoir de multiples inclusions.
Voici ce que j'ai compris, au passage si j'ai tort je me ferai rectifier.
Quand le compilateur n'a qu'un seul fichier à gérer tout se passe bien sans prendre de précaution.
Quand il y a plusieurs fichiers à gérer chaque fichier est compilé séparément pour donner un fichier objet.
Pour faire le programme final les fichiers objets sont liés entre eux par ce qu'on appelle un éditeur de liens ou linker.
Le fait d'utiliser une bibliothèque ajoute deux fichiers au projet : le fichier de déclaration *.h et le fichier code de la bibliothèque *.c ou *.cpp. On est donc dans ce deuxième cas.
Il y a donc 2 situations à gérer :
la compilation : pour pouvoir faire son travail le compilateur doit avoir tous les renseignements sur les fichiers d'en tête utilisés (*.h). Il faut donc répéter dans chaque fichier c/cpp les inclusions dont le fichier a besoin.
le programme final où il ne faut pas inclure plusieurs fois le même fichier
Pour ce faire à la première inclusion d'un fichier d'en tête un nom est créé, dans ton exemple le nom est "EmonLib_h".
Merci!
"dur dur...!" l'explication de 68tjs j'ai encore du mal.
mais....
Regardes le cours de C/Cpp sur le site openclassrom.
Ce sera peut être plus compréhensible que ce que j'ai écrit ![]()