sdcc source code in mehrere Dateien aufteilen

OP #5876857
Lesenswert?

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ß
Angehängte Dateien:
#5876864
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren