Forum: Mikrocontroller und Digitale Elektronik Eclipse Parser includes code completion


von Lord Helmchen (Gast)


Lesenswert?

Hallo,

ich weiß gar nicht so genau, wie ich mein Problem beschreiben soll: Ich 
übe gerade etwas mit Eclipse herum. Da kann man ja mit STRG+SPACE die 
code completion aufrufen. Er scheint dort ja die includes "verstanden" 
zu haben. Bei Visual Studio war es bisher so, daß dort auch nur die 
Sachen vorgeschlagen werden, die noch möglich sind.
Beispiel: Ich inkludiere beim LPC17xx die Datei lpc17xx_timer.h und 
definiere außerhalb von main eine globale Variable TIM_ConfigStruct vom 
Typ TIM_TIMERCFG_Type (eine struct). In main greife ich dann mit dem 
Punktoperator auf das member PrescaleOption zu und will dann nach dem 
Gleichheitszeichen eine Zuweisung machen. Laut Lib gibt es dort nur die 
Möglichkeiten TIM_PRESCALE_TICKVAL und TIM_PRESCALE_USVAL. Es steht dort 
also
TIM_ConfigStruct.PrescaleOption =
Dann drücke ich STRG+SPACE und erwarte, daß nur die beiden laut Lib 
möglichen vorgenannten Werte TIM_PRESCALE_TICKVAL und TIM_PRESCALE_USVAL 
zur Auswahl stehen. Es stehen aber Dutzende sonstwelche Möglichkeiten in 
der Auswahlliste, die damit gar nichts zu tun haben. Das hilft natürlich 
nicht viel weiter, da ich ja dann alle Parameter der Lib kennen muß, um 
den richtigen auszuwählen.

Wo muß ich bei Eclipse was einstellen, damit nur die möglichen Einträge 
zur Auswahl angezeigt werden?

von Lord Helmchen (Gast)


Lesenswert?

Keine Eclipse-Spezis da?

von Wolfgang R. (wolfi089)


Lesenswert?

Ich hab bisher Eclipse nur mit Java benutzt, aber vielleicht eine Idee.
Durch die Deklaration im struct
1
uint8_t PrescaleOption;
ist es Eclispe nicht möglich nur auf die von Dir gewünschten enums 
einzuschränken. Wenn Du zum Test mal den uint8_t durch den enum typedef 
ersetzt könnte es gehen.

von Lord Helmchen (Gast)


Lesenswert?

Im selben header steht
1
typedef enum
2
{
3
  TIM_PRESCALE_TICKVAL = 0,    /*!< Prescale in absolute value */
4
  TIM_PRESCALE_USVAL        /*!< Prescale in microsecond value */
5
} TIM_PRESCALE_OPT;

Scheint wohl zum Parametercheck-Makro zu gehören.

Die Änderung von
1
typedef struct
2
{
3
4
  uint8_t PrescaleOption;    /**< Timer Prescale option, should be:
5
                             - TIM_PRESCALE_TICKVAL: Prescale in absolute value
6
                             - TIM_PRESCALE_USVAL: Prescale in microsecond value
7
                            */
8
  uint8_t Reserved[3];      /**< Reserved */
9
  uint32_t PrescaleValue;   /**< Prescale value */
10
} TIM_TIMERCFG_Type;

in
1
typedef struct
2
{
3
4
  TIM_PRESCALE_OPT PrescaleOption;    /**< Timer Prescale option, should be:
5
                             - TIM_PRESCALE_TICKVAL: Prescale in absolute value
6
                             - TIM_PRESCALE_USVAL: Prescale in microsecond value
7
                            */
8
  uint8_t Reserved[3];      /**< Reserved */
9
  uint32_t PrescaleValue;   /**< Prescale value */
10
} TIM_TIMERCFG_Type;

hat jedenfalls nichts gebracht.

von Andreas B. (andreasb)


Lesenswert?

Welche Eclipse Version benutzt du? Ich habe hier für C/C++ 3.6. (ich 
weiss, nicht aktuell)

Aber das schlimmste: Ich kann dein Problem reproduzieren.

Ich habe Eclipse häufig für C/C++ eingesetzt, aber ist mir noch nie 
aufgefallen, entweder hat es mal korrekt funktioniert, oder ich habe 
einfach immer bereits die Hälfte geschrieben bis die Autocompletion 
angezeigt wurde.

Bei Java ist das ja korrekt umgesetzt, da funktioniert es mit 
Sicherheit.

Wenn es mit der aktuellsten Version auch nicht funktioniert kannst du ja 
mal ein Bugreport erstellen, aber dann Link hier posten;-)




mfg Andreas

von holger (Gast)


Lesenswert?

>Wo muß ich bei Eclipse was einstellen, damit nur die möglichen Einträge
>zur Auswahl angezeigt werden?

Meistens fehlt dann ein include irgendeiner Header-Datei.
Oder eine Datei wurde bearbeitet aber noch nicht gespeichert.
Dann kann man auch noch mal RebuildIndex versuchen.

von Andreas B. (andreasb)


Lesenswert?

Es wird nicht zuwenig angzeigt, sondern zuviel.

Ich habe alles in einer Datei gehabt, und ich habe gespeichert. Trozdem 
hats nicht geklappt. Komisch, habe ich noch nie realisiert bis anhin...

mfg Andreas

von Lord Helmchen (Gast)


Lesenswert?

Andreas B. schrieb:
> Welche Eclipse Version benutzt du? Ich habe hier für C/C++ 3.6.

Also ich benutze

Eclipse IDE for C/C++ Developers
Version: Indigo Service Release 1
Build id: 20110916-0149

Eclipse Platform
Version: 3.7.1.r37x_v20110729

Hoffe, daß das die relvanten Angaben sind (ich schätze 3.7.1 ist das 
Relevante).

von Andreas B. (andreasb)


Lesenswert?

genau, 3.7.1 ist relevant.

Und das ist die aktuelle Version.

=> Bug Report schreiben, oder warten bis jemand noch einen guten 
Vorschlag bringt.

In den Einstellung gibst du bei der Suche mal "content assist" ein, dann 
erscheinen die relevanten Einstellungen. Jedoch habe ich nichts gefunden 
das dein Problem löst.



mfg Andreas

von Wolfgang R. (wolfi089)


Lesenswert?

Ich habs auch mal im CDT probiert. Scheint nicht zu funktionieren und 
zeigt zuviel an. Auf die schnelle habe ich nur eine ähnliche Frage im 
Netz gefunden.

http://stackoverflow.com/questions/3637814/how-can-the-cdt7-0-content-assist-be-configured-to-support-handling-of-enums-lik

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.