Forum: Compiler & IDEs #define in Eclipse


von EclipseBenutzer (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem in Eclipse. In einer Headerdatei habe ich ein 
#define definiert, dass gewisse Quellcodezeilen deaktivieren soll. Nun 
beim compilieren und linken funktioniert dies auch. Allerdings sehe ich 
in Eclipse keine Veränderungen. Die relevanten Codestellen bleiben 
trotzdem ausgegraut. Wie kann dies sein. Was müsste ich tun damit wenn 
das define definiert ist die Codestellen nicht mehr ausgegraut sind?

: Verschoben durch User
von hp-freund (Gast)


Lesenswert?

Alles gespeichert?
Index mal neu aufgebaut?

von EclipseBenutzer (Gast)


Lesenswert?

Das define befindet sich in einer separaten Headerdatei. Index habe ich 
bereits neu aufgebaut. Ich habe auch gespeichert.

von hp-freund (Gast)


Lesenswert?

EclipseBenutzer schrieb:
> Das define befindet sich in einer separaten Headerdatei.

Die aber auch vor den Codestellen inkludiert wird?

von EclipseBenutzer (Gast)


Lesenswert?

Diese Headerdatei wird vor den relevanten Codestellen includiert.

von Mark B. (markbrandis)


Lesenswert?

Das hier:

> ein #define definiert, dass gewisse Quellcodezeilen deaktivieren soll.

und das:

> Die relevanten Codestellen bleiben trotzdem *ausgegraut.*

passen doch zusammen, oder nicht?
Ist aber zugegeben schon lange her, dass ich eclipse das letzte Mal 
benutzt habe.

von hp-freund (Gast)


Lesenswert?

Wie machst Du das genau?

Hier meine Variante:

main.h:
1
#define dddd

main.c:
1
#include "main.h"
2
#ifdef dddd
3
  //code1
4
#else
5
  //code2
6
#endif

Wenn ich in der main.h das #define auskommentiere ändert sich sofort 
nach dem Speichern die Darstellung in der main.c

Es gibt noch mehr Möglichkeiten wie z.B.:
1
#if defined(dddd)
2
  //code3
3
#endif

von EclipseBenutzer (Gast)


Lesenswert?

Hallo,

auf das Beispiel vom Datum: 16.09.2015 21:11 zurückzukommen.
Das define befindet sich in einer separaten Headerdatei. In den anderen 
Headerdateien sowie C Dateien soll dieses define Einfluss haben.

von EclipseBenutzer (Gast)


Lesenswert?

Wenn ich nun das define in der main.h definiere, dann wird trotzdem in 
der main.c Datei die relevanten Stellen nicht ausgegraut.Muss ich 
eventuell in eclipse noch eine spezielle Einstellung vornehmen?

von Walter T. (nicolas)


Lesenswert?

EclipseBenutzer schrieb:
> Wenn ich nun das define in der main.h definiere, dann wird trotzdem in
> der main.c Datei die relevanten Stellen nicht ausgegraut

Heißt die "main.h" auch wirklich "main.h" oder hat die irgendeine andere 
Endung?

von EclipseBenutzer (Gast)


Lesenswert?

Sie heisst genau so.

von hp-freund (Gast)


Lesenswert?

Also wie ich es geschrieben habe funktioniert es.
Groß/Kleinschreibung beachtet?

Zeig mal deine Variante.

von hp-freund (Gast)


Lesenswert?

EclipseBenutzer schrieb:
> In den anderen
> Headerdateien sowie C Dateien soll dieses define Einfluss haben.

den anderen Headerdateien?

Die müssen aber dann auch die main.h inkludieren.

Halt einfach mal die Maus über das definierte Wort in den verschiedenen 
Dateien und beobachte.

von hp-freund (Gast)


Lesenswert?

Ist vielleicht doch besser die Definition in den Projekteinstellungen 
vorzunehmen. Evtl. kannst Du dann verschiedene Konfigurationen anlegen.

von hp-freund (Gast)


Lesenswert?

hp-freund schrieb:
> Halt einfach mal die Maus über das definierte Wort in den verschiedenen
> Dateien und beobachte.

Ich sehe gerade das geht nur bei der "#if Variable" Abfrage.

von hp-freund (Gast)


Lesenswert?

Ich schon wieder ;-)

Das mit der Maus geht immer wenn die .h richtig eingebunden ist.

von EclipseBenutzer (Gast)


Lesenswert?

Also definitiv tut sich nichts. Das Verhalten bleibt so. Wie kann man in 
eclipse nun das define in den Einstellungen setzen?

von hp-freund (Gast)


Angehängte Dateien:

Lesenswert?

Na ja, Du willst wohl nicht verraten wie Du es machst...

Wie im Bild, ein neues Symbol hinzufügen.

von EclipseBenutzer (Gast)


Lesenswert?

Ja und diese Variante funktioniert auch nicht. Ich weiss da einfach 
nicht weiter. Danke nochmals für eure Hilfe.

von Rainer V. (rudi994)


Lesenswert?

Gleiches Problem auch in CodeBlocks, wenn das #define nicht im aktuell 
angezeigten, sondern in einem includierten Text vorhanden ist.

Das Problem hat mit Compiler/Linker nichts zu tun, da funktioniert 
alles. Es kann aber z.B. am Plug-In für die Textdarstellung liegen.

In CodeBlocks kann Hervorheben von Preprocessor-Code ein-/ausgeschaltet 
werden und separat im Dialogfenster für Syntax-Highlighting können für 
solchen Code noch Textfarben gewählt werden. Ähnliches gibt es auch in 
Eclipse für C/C++: http://help.eclipse.org/mars/index.jsp

Menüs/Knoten öffnen bzw. weiterführende Links anklicken:
C/C++ Development User Guide -Getting started -Preparing the Workbench
Im Text unter: Setting the C/C++ editor operations and appearance
Link: Editor - control the appearance of text highlighting

von EclipseBenutzer (Gast)


Lesenswert?

Hallo Rainer,

danke für deinen Post. Ich kann diese Einstellungen in eclipse nicht 
finden. Wo muss ich was genau einstellen?

Wo befindet sich "C/C++ Development User Guide"?

Wo befindet sich "Setting the C/C++ editor operations and appearance"?

von EclipseBenutzer (Gast)


Lesenswert?

Ich habe noch ein anderes Problem in eclipse festgestellt.

Wenn ich die include Dateien so in meine main.c Datei einfüge,
dann funktioniert zwar das Übersetzen aber ich sehe die Variablen und 
Methoden von der Headerdatei gestrichelt.
1
extern "C"
2
{
3
  #include  "uart.h"
4
}
5
6
int main(void);
7
uart puart;  <----- uart wird gestrichelt markiert!
8
9
10
int main(void)
11
{
12
13
}

Es muss definitiv mit den Einstellungen für eclipse zu tun haben.

von Rainer V. (rudi994)


Lesenswert?

EclipseBenutzer schrieb:
> kann diese Einstellungen in eclipse nicht finden

Rainer V. schrieb:
> Eclipse für C/C++: http://help.eclipse.org/mars/index.jsp
> Menüs/Knoten öffnen ...

Das ist das Menü/Inhaltsverzeichnis auf o.g. Webseite! Ich weiß nicht, 
wo die Einstellungen in Eclipse C/C++ zu finden sind. Ich habe Eclipse 
für Java, da ist es in Menü Window\Preferences, weiter im Dialogfenster 
Preferences unter General\Appearance und dann unter "Colors and Fonts".

von Klaro (Gast)


Lesenswert?

Versuch das mal:
1
#ifdef __cplusplus
2
extern "C" {
3
#endif
4
5
#include  "uart.h"
6
7
uart puart;
8
9
int main(void)
10
{
11
12
}
13
14
#ifdef __cplusplus
15
}
16
#endif

von Chris (Gast)


Lesenswert?

Such mal im Formum nach eclipse und avr Fehlermeldungen, ganz am Ende.
Da kann es ein Problem mit dem Language Mapping geben.

Christian

von Rainer V. (rudi994)


Lesenswert?

Die scheinbar falsche Textdarstellung ist vllt. gar kein Fehler, sondern 
liegt daran, daß bei #ifdef-#else-#endif u. dergl. die Darstellung in 
verschied. Farben nur in demjenigen Quelltext wirksam ist, in dem auch 
das auszuwertende Symbol definiert ist. Also nicht im Fall, daß das 
Symbol in einem includierten Text definiert ist, denn dann müßte der 
Editor ständig nicht nur den Haupt-Quelltext, sondern auch sämtliche 
includierten Texte nach Definitionen und Rückdefinitionen aller Symbole 
durchsuchen. Sicher ein hoher Aufwand.

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.