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