Re: Preprocessor: Einbinden von Header Dateien

Thomas Hertweck <[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>

Philipp Thomas wrote:
>   [...]
> 
>   Wenn die Header mit "" eingebunden wurden, entscheidet die Reihenfolge, in
>   der die zu durchsuchenden Verzeichnisse (mit -I) angegeben wurden
>   (aktuelles Verzeichnis wird ja nicht automatisch durchsucht sondern muss
>   mit -I. angegeben werden).
>   Für jeden Header werden diese Verzeichnisse erneut der Reihe nach
>   abgeklappert.

Nein, werden sie ja anscheinend gerade nicht, siehe meine urspruengliche
Email. Der Befehl lautete "gcc -I. -I../include" und wurde im
Verzeichnis src ausgefuehrt. Die gesamte Verzeichnisstruktur ist wie folgt:

./include
  |-> first.h
  |-> second.h
./src
  |-> code.c
  |-> second.h

first.h bindet second.h ueber #include "second.h" ein. GCC bindet bei
diesem Beispiel die Datei second.h aus dem include Verzeichnis ein,
nicht die lokale second.h im src Verzeichnis, d.h. Deine Aussage,
"fuer jeden Header werden diese Verzeichnisse erneut der Reihe nach
abgeklappert" ist meiner Meinung nach nicht korrekt.

Sobald Du die Datei first.h von include nach src kopierst (oder einen
Link first.h -> ../include/first.h im Verzeichnis src anlegst),
funktioniert die Sache.

Ich habe mal ein tar Archiv angehaengt, damit Du das Problem auf Deinem
Rechner anschauen kannst. Ich hoffe, das tar kommt an. Entweder stimmt
Deine Aussage nicht, oder ich habe sie falsch verstanden ;-) Ein "make"
im src Verzeichnis schlaegt fehl, weil das Makro JJJ nicht definiert ist
(obwohl in der lokalen second.h gegeben) - so verhaelt es sich
jedenfalls auf meiner SuSE 10.3 (und auch auf einem Fedora 8 System).

Ich war uebrigens wie Bernhard auch der Meinung, dass -I. optional ist,
der GCC macht das doch normal automatisch. Spielt aber in dem Falle hier
keine Rolle, denke ich, weil es ja eh explizit angegeben ist.

Danke fuer Deine Hilfe,
Thomas
gcc_include_test.tar.gz (application/x-gzip, 518 B) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.