C++, #define testname aus vorher inkludierter datei.h wird ignoriert

#4968389
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?
Gast #4968403
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.
Gast #4970092
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren