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

OP #4968389
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
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
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?
#4970156
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 ...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.