Moin zusammen, ich grübel grade über einem Problem. Vielleicht weiß ja einer von euch weiter. Ich teste grade verschiedene STM8 Controller. Als Compiler nutze ich SDCC(3.9.0) auf einem Linux Mint 19. Zu Anfang habe ich den kompletten Code in der main.c gelassen. Compiliere ich diese (mit sdcc -mstm8 main.c) klappt das. Siehe alle angehängten Files mit _ver1. Teile ich meinen Code auf mehrere Files auf muss ich zuerst die einzelnen Files Compilieren, so will es das Manual. Dabei habe ich plötzlich Compilerfehler (stm8s.h:266: syntax error: token -> 'ODR' ; column 22). Der gleiche Header ist in der ersten Version aber auch eingebunden und wird auch genutzt. Die nicht funktionierende Version ist als _ver2 angehängt. Hat vielleicht jemand eine Idee was hier falsch läuft? Gruß
Patrick S. schrieb: > Moin zusammen, > > ich grübel grade über einem Problem. Vielleicht weiß ja einer von euch > weiter. Ich teste grade verschiedene STM8 Controller. Als Compiler nutze > ich SDCC(3.9.0) auf einem Linux Mint 19. > Zu Anfang habe ich den kompletten Code in der main.c gelassen. > Compiliere ich diese (mit sdcc -mstm8 main.c) klappt das. Siehe alle > angehängten Files mit _ver1. > Teile ich meinen Code auf mehrere Files auf muss ich zuerst die > einzelnen Files Compilieren, so will es das Manual. Dabei habe ich > plötzlich Compilerfehler (stm8s.h:266: syntax error: token -> 'ODR' ; > column 22). Der gleiche Header ist in der ersten Version aber auch > eingebunden und wird auch genutzt. Die nicht funktionierende Version ist > als _ver2 angehängt. > > Hat vielleicht jemand eine Idee was hier falsch läuft? > > Gruß Sieht nicht nach einem SDCC-, sondern einem C-Problem aus: Deine stm8s.h benutzt Datentypen aus stdint.h. In deiner alten main.c bindest du zuerst stdint.h, dann stm8.h ein, was klappt. Bei deiner Aufteilung bindest du aber in gpio_ver2.c über gpio_ver2.h stm8s.h ein, ohne vorher stdint.h einzubinden. Eleganter wäre wohl, wenn stm8s.h direkt am Anfang stdint.h einbinden würde, um derartige Probleme zu vermeiden. Philipp
Ach verdammt, das war es. Habe ich echt nicht gesehen. Vielen Dank für den Tipp, so klappt es natürlich. Gruß Patrick
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.