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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren