Forum: Compiler & IDEs C++, #define testname aus vorher inkludierter datei.h wird ignoriert


von Florian R. (fxlxo)


Lesenswert?

Hallo,

ich verwende Eclipse und habe folgendes Problem:

was ich mache:
1
//include1.h
2
3
#ifndef __INCLUDE1_H_
4
#define __INCLUDE1_H_
5
6
    #define testname
7
    #include "include2.h
8
9
#endif//ende include2.h
10
11
12
//include2.h
13
#ifndef __INCLUDE2_H_
14
#define __INCLUDE2_H_
15
    
16
    #ifdef testname
17
    
18
    // "eingegraut und ignoriert" Warum???
19
    #endif
20
//...
21
#endif //ende include2.h

Die Datei include1.h wird definitiv zuerst eingebunden. Ist das 
vielleicht eine Compilereinstellung, dass er alle Dateien im "inC" 
Ordner einfach einbindet und deshalb vielleicht dann doch die include2.h 
vor der include1.h eingebunden wird?

: Verschoben durch User
von A. S. (Gast)


Lesenswert?

Das funktioniert nur dann zuverlässig, wenn der #include von include1.h 
der ersten in einem C-File ist. Ansonsten wist include2.h vielleicht 
schon eingebunden. Teste es z.B. mit

#ifdef _INCLUDE2_H
#error
#endif

Und der Compiler sagt Dir mit einer Fehlermeldung vielleicht, in welchem 
"include-Weg" das passiert.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Florian R. schrieb:
> Die Datei include1.h wird definitiv zuerst eingebunden.

Dann ist ja alles ok.

> Ist das vielleicht eine Compilereinstellung, dass er alle Dateien
> im "inC" Ordner einfach einbindet und deshalb vielleicht dann doch
> die include2.h vor der include1.h eingebunden wird?

Nein.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Florian R. schrieb:
> // "eingegraut und ignoriert" Warum???

Das ist also nur ein Anzeigeproblem.

Mit dem Compiler selbst hat das nichts zu tun, das ist nur Eclipse.

von Werner (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Das ist also nur ein Anzeigeproblem.
>
> Mit dem Compiler selbst hat das nichts zu tun, das ist nur Eclipse.

und es wäre schon viel verlangt wenn die IDE das besser machen sollte,
es könnten ja im einen C-File die Headerdateien in der einen 
Reihenfolge, in einem anderen C-File in anderer Reihenfolge includiert 
werden. Für was sollte sich die IDE da entscheiden?

von Wilhelm M. (wimalopaan)


Lesenswert?

Manche IDEs parsen die Header nur in größerem zeitlichen Abstand bzw. 
auf Anforderung, um das interne Code-Model zu aktualisieren.

Aber grundsätzlich sollte das schon in der Anzeige stimmen, andernfalls 
ist es in Bug!

Aber eclipse und C/C++ ist eh nicht der Hit ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.