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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
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?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.