Forum Programmation.c syntaxe des fichiers include

Posté par  .
Étiquettes : aucune
0
6
nov.
2005
Bonjour,

Voila, je reprends un source en C sous Mandrake , pour faire tourner une carte d'acquisition.

Les fichiers include sont en notation #include<file.h>
sauf deux d'entre eux, particuliers au système qui sont
en notation #include "file.h"

Je n'ai pas trouvé les différences dans une doc. Je crois que <> lui demande d'aller chercher dans des répertoires standard de gcc ???

Il y a aussi une notation ../../include dans le Makefile. Est-ce qu'il faut copier les fichiers .h dans un répertoire home/include ?

Est-ce qu'il faut faire des liens pour que gcc trouve les lib ?

Je ne pas trouvé de doc relatant une méthode générale, sauf man gcc, mais cela doit être en page 1024...Le source était sur un autre PC, j'ai tout ré installé, et maintenant, apparemment il n'est pas tout à fait "portable".

Merci de m'éclairer de façon générale sur ces recherches de chemin et la "bonne" manière de référencer tout cela.
  • # la différence...

    Posté par  (site web personnel) . Évalué à 6.

    en fait les include "toto.h" indiquent qu'il faut chercher dans le chemin ou tu as ton .c (ou cpp) (en gros).

    et le include <toto.h> indique bien qu'il faut aller chercher dans les chemins par défaut de gcc ou des bibliothèques standards.

    ensuite, si tu as include "rep/toto.h", cela veut donc dire inclure le fichier toto.h contenu dans le sous-dossier rep de ton réperoire contenant les .c
    • [^] # Re: la différence...

      Posté par  . Évalué à 6.

      > en fait les include "toto.h" indiquent qu'il faut chercher dans le chemin ou tu
      > as ton .c (ou cpp) (en gros).
      >

      pas que en gros, les "" indiquent qu'il faut chercher avec un chemin relatif a partir de la ou est le .c


      > et le include <toto.h> indique bien qu'il faut aller chercher dans les chemins par > défaut de gcc ou des bibliothèques standards.
      >

      pas seulement, en fait avec des <>, le compiateur cherche dans tous les chemins definis avec l'option -I (d'ou les ../../include dans le makefile) ; quand il a parcouru tous les repertoires indiques par -I, il cherche dans les "standard system include directories"
      • [^] # Re: la différence...

        Posté par  . Évalué à 4.

        pas que en gros, les "" indiquent qu'il faut chercher avec un chemin relatif a partir de la ou est le .c


        Puis, si le compilateur ne trouve pas le fichier en question, il le traite comme s'il était inclus avec des < et > ...
        • [^] # MERCI A VOUS 2

          Posté par  . Évalué à 2.

          Bon, je crois comprendre vos explications.

          J'ai mis les chemins à la main dans le make et maintenant cela compile correctement. Les include sont par contre notés en <> et "" dans le C

          Je vais ensuite faire des essais en incorporant les chaînes ../ pour bien me convaincre du mécanisme. Ce problème est donc résolu.

          Ce qui n'est pas résolu-pour moi- c'est de trouver une portabilité en fonction du PC ou cela s'installe.

          C.Blaess dans son livre sur C++, fournit un programme C permettant de changer l'environnement, mais c'est assez lourd en apparence.

          D'autre part on m'a conseillé les scripts, je recherche dans cette direction

          Cordialement
          • [^] # Re: MERCI A VOUS 2

            Posté par  (site web personnel) . Évalué à 3.

            Ta portabilité viendra en changeant les options -I passées en paramètre à gcc dans les CFLAGS. Elle donne les répertoires où il faut chercher les entêtes (.h). Mais logiquement, tu devrais avoir d'une machine à l'autre un agencement relativement similaire de tes entêtes, sinon c'est que t'as un truc louche.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.