Re: Preprocessor: Einbinden von Header Dateien

David Haller <[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Hello,

On Tue, 11 Nov 2008, Bernhard Walle wrote:
>* Thomas Hertweck [2008-11-11 20:41]:
>> 
>> 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.
>
>-I. führt dazu dass <> auch im aktuellen Verzeichnis sucht. Aber ""
>sucht immer im aktuellen Verzeichnis (also dem Verzeichnis der
>Quellcodedatei, nicht dem Arbeitsverzeichnis des Compilers wenn du
>gcc z.B. als gcc -o dir/prog dir/prog.c startest also in dir/, nicht
>in .).

Und "" sucht scheinbar relativ zur aktuellen Datei. Also von 'first.h'
aus gesehen ist "second.h" in "." das in ./include.

Etwas nachvollziehbarer wird's mit 'gcc -Wp,-H'.

a) mit "second.h", beide ohne definiertes "JJJ":

$ gcc -Wp,-H -I. -I../include code.c
../include/first.h
 ../include/second.h
/usr/include/stdlib.h

$ gcc -Wp,-H -I../src -I. -I../include code.c
../include/first.h
 ../include/second.h
/usr/include/stdlib.h

b) mit <second.h>, beide mit definiertem "JJJ":

$ gcc -Wp,-H -I. -I../include code.c
../include/first.h
 second.h
/usr/include/stdlib.h

$ gcc -Wp,-H -I../src -I. -I../include code.c
../include/first.h
 ../src/second.h
/usr/include/stdlib.h

c) mit <second.h>, ohne definiertes "JJJ":

$ gcc -Wp,-H -I. -I../src -I../include code.c
../include/first.h
 ../include/second.h
/usr/include/stdlib.h

Nur auf die Schnelle getestet mit gcc 2.95.2 und 3.3.5.

HTH,
-dnh, der da auch nicht ganz durchsteigt.

-- 
> Bei Lidl gibt es nächste Woche eine CD mit "Tools für 100%
> PC-Sicherheit". Kann man es den Virenschreibern noch einfacher
> machen?                                          -- M. Kordell
Lidl verkauft Seitenschneider?                    -- J. Nieveler
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.