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
Das define befindet sich in einer separaten Headerdatei. Index habe ich bereits neu aufgebaut. Ich habe auch gespeichert.
EclipseBenutzer schrieb: > Das define befindet sich in einer separaten Headerdatei. Die aber auch vor den Codestellen inkludiert wird?
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.
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
|
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.
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?
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?
Also wie ich es geschrieben habe funktioniert es. Groß/Kleinschreibung beachtet? Zeig mal deine Variante.
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.
Ist vielleicht doch besser die Definition in den Projekteinstellungen vorzunehmen. Evtl. kannst Du dann verschiedene Konfigurationen anlegen.
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.
Ich schon wieder ;-) Das mit der Maus geht immer wenn die .h richtig eingebunden ist.
Also definitiv tut sich nichts. Das Verhalten bleibt so. Wie kann man in eclipse nun das define in den Einstellungen setzen?
Na ja, Du willst wohl nicht verraten wie Du es machst... Wie im Bild, ein neues Symbol hinzufügen.
Ja und diese Variante funktioniert auch nicht. Ich weiss da einfach nicht weiter. Danke nochmals für eure Hilfe.
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
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"?
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.
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".
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
|
Such mal im Formum nach eclipse und avr Fehlermeldungen, ganz am Ende. Da kann es ein Problem mit dem Language Mapping geben. Christian
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.