Forum: Compiler & IDEs Eclipse Outline Makro


von Oliver N. (batman)


Lesenswert?

Hallo zusammen,

1
//test.c
2
3
#define NewName_ISR  FixName_ISR
4
5
void NewName_ISR(void)
6
{
7
  //Implementation
8
}

Ich arbeite mich gerade in einen Cortex-M4 zusammen mit Eclipse als IDE 
ein. Dabei gibt es festgelegte Funktionsnamen für die ISR. Um einen 
eigenen Namen zu verwenden mache ich am Anfang ein Rename. Das Problem 
dabei ist das Eclipse num im Outline Fenster unter dem "alten" Namen, 
also FixName_ISR, aufführt weil scheinbar das Makro aufgelöst wird.

Ist es möglich das im Outline-Fenster zu unterbinden und den neuen Namen 
anzeigen zu lassen?

: Bearbeitet durch User
von holger (Gast)


Lesenswert?

>Dabei gibt es festgelegte Funktionsnamen für die ISR. Um einen
>eigenen Namen zu verwenden

Wie kommt man auf so eine schwachsinnige Idee?

Mach es so:

void FixName_ISR(void)
{
  NewName_ISR();
}

void NewName_ISR(void)
{
  //Implementation
}

von Oliver N. (batman)


Lesenswert?

Da es um sehr zeitkritische Anwendungen geht möchte ich die 
vorgeschlagene Lösung vermeiden. Zudem finde ich die von mir 
vorgeschlagene Variante im Code wesentlich übersichtlicher. Dennoch 
danke für den Vorschlag.

von Vitali (Gast)


Lesenswert?

Dann entweder inlinen oder einen alias verwenden.
eg
1
void NewName_ISR () __attribute__ ((weak, alias ("FixName_ISR")));

von chnun (Gast)


Lesenswert?

>Dabei gibt es festgelegte Funktionsnamen für die ISR.

Von wem festgelegt?

von Jim M. (turboj)


Lesenswert?

>>Dabei gibt es festgelegte Funktionsnamen für die ISR.
>
> Von wem festgelegt?

Bei Cortex M4 wird das üblicherweise im vom Hersteller geliefterten 
Assembler Startup festgelegt.

Das hier
1
void NewName_ISR () __attribute__ ((weak, alias ("FixName_ISR")));

kann schief gehen, da es meistens schon einen weak Alias im o.g. Startup 
Code gibt (default Handler).

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.