Hallo miteinander Ich habe eine kleine Frage: ST bietet die sehr bequemen stdPeriph_Lib an, welche ich auch gedenke zu nutzen. Diese sind, so wie auch der Rest in C geschrieben. Ist es jetzt möglich, das eigentliche Projekt auf C++ zu machen, und die Lib ohne grosse Änderungen einzubinden und anzusprechen? Oder muss ich um jedes File einen Wrapper bauen, was einen imensen Arbeitsaufwand bedeutet? Die Frage stellte sich bei einem Projekt. Ich soll ein Framework schreiben, welches sehr einfach portierbar ist (also von ARM zu ARM, zu FGPA, zu MultiCore-CPU...), damit möglichst überall das gleiche verwendet werden kann. Besten Dank für die Antwort MFG Patrick
Solange man das "name mangling" beachtet, sollte es kein Problem sein. http://en.wikipedia.org/wiki/Name_mangling#Handling_of_C_symbols_when_linking_from_C.2B.2B
Die die C-Funktionen beschreibende Headerdatei muss "C++"-sicher gemacht werden, das geht so
1 | #ifdef __cplusplus
|
2 | extern "C" |
3 | {
|
4 | #endif
|
5 | |
6 | ... hier jetzt der Kram, der in der Headerdatei drinsteht |
7 | |
8 | #ifdef __cplusplus
|
9 | }
|
10 | #endif
|
Damit ist alles, was in der Headerdatei steht, als extern "C" deklariert, was das name-mangling abschaltet, so daß das Linken korrekt funktioniert. Die Library selbst muss nicht angefasst werden.
Rufus Τ. Firefly schrieb: > Die Library selbst muss nicht angefasst werden. Die Header der Lib aber schon, ansonsten sind die nötigen Funktionen für den nächst höheren "Layer" nicht bekannt. Ebenso müssten dann diverse Klassen gebildet werden (z.B. bei UART: Settings, welche UART...). Oder verstehe ich da jetzt etwas falsch?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.