Salut,
J'ai 2 questions a propos des .h:
1-Quelle est la différence un <toto.h> , un <toto/momo.h> et un "toto.h" ?
2- Comment transformer un "toto.h" en un <toto.h> ?
Cordialement.
Salut,
J'ai 2 questions a propos des .h:
1-Quelle est la différence un <toto.h> , un <toto/momo.h> et un "toto.h" ?
2- Comment transformer un "toto.h" en un <toto.h> ?
Cordialement.
1- <toto.h> est dans les répertoires "connus" de ton compilateur
"toto.h" est dans les répertoires autres (définis sur ton projet)
<toto/momo.h> ton fichier momo.h est dans le répertoire "répertoire_connu_de_ton_compilo\toto\"
2- tu mets ton fichier dans les répertoires par défaut de ton compilo
2- tu ignores le mauvais conseil de Captain_JS et tu ajoutes plutôt le répertoire contenant toto.h à la liste de répertoires connus de ton compilo.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Normalement, un #include <A> va commencer par chercher A dans les répertoire connus, puis relativement à l'unité de compilation (le .cpp)
Un #include "A" va commencer par chercher A relativement à l'unité de compilation puis dans les répertoire connus
Ensuite... rien ne t'empêche de mettre un chemin relatif, genre:
#include "../includes/toto.h"
Si ton fichier .cpp est dans "C:\test\src\toto.cpp", le précompilateur va d'abord chercher "C:\test\includes\toto.h"
Tout à fait d'accord.
Une installation propre de bibliothèque par exemple se fait en 2 étapes :
- on installe la bibliothèque dans un répertoire sur son disque dur
- on ajoute les dossier "include" et "lib" de cette bibliothèque respectivement aux répertoires d'inclusion du compilateur et aux répertoires de liaison du compilateur. Cela se traduit par exemple pour GCC par l'ajout de paramètres -I et -L ('i' et 'l' majuscules) dans la commande de compilation de chacun des fichiers.
Cela permet entre autres lors d'une mise à jour de la bibliothèque de ne faire que remplacer l'ancienne par la nouvelle ou alors mettre la nouvelle dnas un autre répertoire et ainsi simplement changer les dossiers que l'on avait rajouté pour la version précédente dans les options du compilateur.
Mettre la main dans les dossiers include et lib fournis avec le compilateur ce n'est pas une bonne pratique.
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Il n'est nullement question de bibliothèque... hunter ne parle que de fichier "headers"...
Et je vais me répéter: Utiliser < > pour les headers d'implementation (stdio, stream, ...) et utiliser " " pour les autres headers est à mon avis non seulement une bonne idée, mais même la raison pour laquelle les deux syntaxes existent...
Créez un projet... Rajoutez-y un fichier "windows.h"....
Et ensuite faites #include "windows.h" dans votre projet, c'est le windows.h du projet qui est inclus.
Faites #include <windows.h>, c'est celui du SDK de windows qui est inclus.
Ca marche aussi avec GCC...
http://gcc.gnu.org/onlinedocs/cpp/In...Include-Syntax
Maintenant, si on parle de l'intégration de bibliothèques... alors il faut modifier le chemin de recherche du compilateur, et pas modifier les headers eux même bien sur.
Partager