Hallo allerseits,
ich habe ein Problem mit Code::Blocks und dem GCC für den STM32. Und
zwar scheint es als ob der Präprozessor nicht aufgerufen wird. Im
ASM-Startup-Script gibt es dann eine Fehlermeldung, dass ein Label
doppelt initialisiert wird, weil offensichtlich beide Teile des
Präprozessor-#if-Blockes ausgewertet werden (Code-Fragment siehe unten).
Ich habe dann den #else-Zweig einfach rausgeschmissen, habe dann aber
über Compilerwarnungen festgestellt, dass auch im C-Code einer
Bibliothek merkwürdige Dinge passieren, mit Warnungen in #ifdef-Blöcken,
die im Editor ausgegraut sind, also gar nicht kompiliert werden sollten.
Das Kompilieren hat aber funktioniert. Mein Verdacht ist nun, dass der
Compiler ohne vorigen Aufruf des Präprozessors durchläuft oder zumindest
nur mit reduzierter Funktionalität.
Aber kann das überhaupt sein?
-> Gibt es irgendwelche Einstellungen die man machen muss, oder gibt es
Kommandos (die bei mir evtl. gesetzt sind), um den Präprozessor
einzuschränken?
Den ARM-GCC-Compiler habe ich für Code:Blocks selbst eingerichtet und da
kann natürlich etwas falsch sein.
Code::Blocks deshalb um später den Chip-Hersteller wechseln zu können,
ohne eine neue IDE zu benötigen, aber das nur am Rande.
1 | #if 1
|
2 | [...]
|
3 | .flash_to_ram_loop:
|
4 | [...]
|
5 | #else
|
6 | [...]
|
7 | .flash_to_ram_loop:
|
8 | [...]
|
9 | #endif
|
Fehlermeldung: startup_stm32f10x_md.s|166|Error: symbol
`.flash_to_ram_loop' is already defined|