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