STM32CubeIDE enum class in header

Gast #6911541
Lesenswert?
• ▲
▼
Hallo,

seit längerem... mache ich mal wieder was in C++. Dazu die 1.8.0 
STM32CubeIDE heruntergeladen, neues STM32-Projekt mit C++ (17) angelegt.

Quasi "leer" habe ich im Projekt eine Datei "header.h" angelegt, in der 
nur folgendes steht (außer include-guard):
1
enum class Farbe {
2
ROT, 
3
BLAU
4
};
Nun meckert mir der Compiler als einzigen Fehler in dieser Datei und dem 
ganzen "Projekt" an:
error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token

Irgendwie stehe ich total auf dem Schlauch. Wird ja irgendwas ganz 
dämliches sein. Erbarmt sich bitte wer kurz?
Gast #6914123
Lesenswert?
• ▲
▼
Klaus W. schrieb:
> Das sollte ab C++ 14 gehen.
> Hast du vielleicht C++98 eingestellt?

Nein, C++17 (s.o.).

Klaus W. schrieb:
> Dann muß man der STM32-IDE sagen, daß sie C++ kompilieren soll.

Habe ich durch Auswählen bei Anlage des Projektes ja gemacht.

Ich habe gerade mal mit anderen Suchbegriffen "Erfolg" gehabt: Ist wohl 
ein altes und bekanntes Problem, daß Cube mit C++ wohl nicht so 
geschmeidig läuft. Die Königslösung ist wohl, aus der main.c an 
geeigneter Stelle my_main.cpp aufzurufen und von aus dieser ganz normal 
das C++-Projekt zu starten.

Ich war bisher nur mit der MCUXpresso IDE unterwegs, da läuft C++ ohne 
Probleme nach der Auswahl.
Gast #6915452
Lesenswert?
• ▲
▼
Yup, eine my_main.h (oder hpp, je nach Gusto) mit einer Funktion
1
extern "C" void my_main(void)
 deklarieren und diese my_main.hpp in main.c inkludieren. In main.c dann 
my_main() aufrufen. In my_main.cpp kann man sich dann in der Funktion 
my_main() in C++ austoben. In my_main() steht dann praktisch das 
Hauptprogramm.

Hintergrund ist, daß die Cube immer eine main.c generiert. Also immer 
nur C-Code generiert.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.