Gast
#6007069
Eine C-Firmware, die ich mit dem Unit-Testframework "Google Test" testen muss, wird mit der Compileroption "-fshort-enums" übersetzt. Enums werden auch in Strukturen benutzt. Es ist wichtig, dass die Strukturen die selbe Größe wie in der originalen Firmware besitzen. Die Firmware wird mit dem AVR-GCC und das Testprogramm mit dem MINGW compiliert. Das Testprogramm soll auf dem PC laufen. Benutze ich "-fshort-enums" um das Testprogramm zu übersetzen, stürzt das Programm mit einem Segmentation Fault ab. Das passiert beim Verlassen eines Testfalls, der eine C-Funktion testet, in der ein Enum benutzt wird. Entferne ich die Compileroption, tritt der "Segmentation Fault" nicht mehr auf. Allerdings schlagen dann die Testfälle fehl. Die Option nur für das C-File zu benutzten ist leider nicht möglich. Denn es gibt globale Variablen und Funktionsparameter (zu testende Funktionen und Mocks) die entsprechende Strukturen benutzen, und diese müssen aus dem C++ Testprogramm heraus ebenfalls benutzt werden. Meine Suche im Internet nach diesem Problem hat leider kein Ergebnis zutage gefördert. Hat jemand eine Idee, wie man diesen Widerspruch lösen kann? Gibt es relevante Optionen mit dem man das Google Test steuern kann? Oder muss man das Google Test selbst mit dieser Option übersetzen?