Forum: Mikrocontroller und Digitale Elektronik keil uVision - .cpp kompilieren


von Mirco H. (mirq)


Lesenswert?

Hallo,

gibt es eine Möglichkeit in uVison .cpp Dateien zu kompilieren? Etwas 
Vergleichbares zu der Einstellung 'Compile as C++' im Visual Studio zum 
Beispiel? Oder ein include?

Bei geänderter Endung in .c funktioniert alles. Bei .cpp werden alle in 
den Modulen enthaltenen Funktionen als 'Undefined symbol' mit einem 
Error gekennzeichnet.


Viele Grüße, Mirco

von Christoph (Gast)


Lesenswert?

vielleicht fehlt ja sowas?
extern "C"
{
  #include "cheader.h"
}

der c++ compiler verändert die Funktionsnamen damit ÜBerladung möglich 
ist. Um das für c Module zu verhindern müssen die entsprechenden header 
als extern "C" definiert werden

von Mirco H. (mirq)


Lesenswert?

Funktioniert leider nicht...
Kann es sein, dass das nur für einzelne Funktionen funktioniert und 
nicht für die ganze header-Datei? error: #40: expected an identifier

habe es in der main.c und in includes.h versucht, die wiederum in main.c 
included ist. Kein Erfolg bisher.

von nobody (Gast)


Lesenswert?

Hallo es liegt auf jedefall an sowas.

Probier im Header die C - Funktionen mit dem hier zu kapseln.


#ifdef __cplusplus
extern "C"
{
#endif



#ifdef __cplusplus
}
#endif


danach sollte es auch funktionieren.
Hier bei uns gehst es so auf jedenfall.

Gruß

Jürgen

von Mirco H. (mirq)


Angehängte Dateien:

Lesenswert?

Hallo Jürgen,

in meiner main.c steht jetzt:
1
..
2
#define __cplusplus
3
4
#include "includes.h"
5
..

die includes.h ist als Bild im Anhang; daraus ersichtlich ein Teil der 
Fehler die dann entstehen... Die ersten beiden beziehen sich auf 
includes.h, die restlichen alle auf stdlib.h

Was mache ich falsch?

Viele Grüße, Mirco

von Jürgen H. (nobody)


Lesenswert?

Hallo,

das define __cplusplus brauchst Du nicht das macht der compiler.
Zudem würde ich nicht den ganzen Header so einbinden sondern das extern 
C in den Header verschieben.

Wenn der Header dann vom Compiler (c oder c++) aufgerufen wird weiß er 
wie er damit umzugehen hat.

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.