Forum: Mikrocontroller und Digitale Elektronik Frage zum "C" Syntax


von Richard B. (Gast)


Lesenswert?

Hallöchen,

Was genau bewirkt das ->
1
extern "C" void SysTick_Handler(void)
2
{
3
  //leer    
4
}

Vielen Dank.

von S. R. (svenska)


Lesenswert?

Das'ne leere Funktion.

von Richard B. (Gast)


Lesenswert?

Also viel mehr ->
1
extern "C"

von S. R. (svenska)


Lesenswert?

Das sagt dem C++-Compiler, dass diese Funktion wie ein C-Funktion zu 
behandeln ist (d.h. kein Name Mangling).

von Der Andere (Gast)


Lesenswert?


von Richard B. (Gast)


Lesenswert?

Hat also erst mal nichts mit einem C Kompiler zu tun?

von Jim M. (turboj)


Lesenswert?

Richard B. schrieb:
> extern "C" void SysTick_Handler(void)
> {
>   //leer
> }

Es erzwingt "C" Funktionsaufruf in C++ Code. Ohne dem würde der Aufruf 
aus Assembler Ebene anders aussehen und der Eintrag in der Vektor 
Tabelle nicht funktionieren.

Das ist eine beliebte Falle wenn man ein *.c file nach *.cpp umbenennt - 
dann wird es nämlich als C++ übersetzt.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Richard B. schrieb:
> extern "C" void SysTick_Handler(void)

Die Linkage des folgenden Symbols (SysTick_Handler) entspricht der 
Linkage in C.  Die FUnktion selbst wird aber wie eine "normale" C++ 
Funktion behandelt.

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.