www.mikrocontroller.net

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


Autor: Mirco H. (mirq)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mirco H. (mirq)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: nobody (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mirco H. (mirq)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jürgen,

in meiner main.c steht jetzt:
..
#define __cplusplus

#include "includes.h"
..

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

Autor: Jürgen H. (nobody)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.