Beim Evaluieren mit einem CH32V003 kämpfe ich - wieder einmal - an einer Ecke mit einem Problem, an der ich kein Problem erwartet habe.
Compiler ist: riscv-none-elf-gcc Version 14.2.0
Das Framework CH32FUN verwendet im Setup den Compilerschalter -nostdlib
Das kann man nicht entfernen, macht man es doch hageln viele Fehlermeldungen
Grundsätzlich habe ich da mit den Bibliotheken ein Problem. Funktionen aus <stdlib.h> wie bspw. rand sind nicht verfügbar. Okay, ist halt nicht verfügbar.
Auch in <string.h> gibt es bspw. ein "toupper" nicht, okay, gibts halt auch nicht (und ist ja auch schnell geschrieben).
Allerdings ein strchr gibt es und damit habe ich jetzt ein Problem(chen):
Mit den Compilern
- avr-gcc
- arm-none-eabi-gcc
- gcc (in der PC-Konsole)
- sdcc 4.4 (auf einem STM8)
erfolgt mit folgendem Code:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
Die aus meiner Sicht der Dinge die richtige Ausgabe:
1 |
|
Der riscv-none-elf-gcc auf einem CH32V003 gibt mir aus:
1 |
|
Woran liegt das?
Natürlich kann ich mir behelfen in der Art
if (ptr-string == (strlen(string)+1)
Aber das gefällt mir natürlich nicht. Ich kann auch ein eigenes strchr programmieren (gefällt mir aber auch nicht).
Woran liegt das, dass der riscv-compiler (bzw. die Standardbibliothek strchr) ein anderes Ergebnis bringt wie alle anderen Compiler ?