Hallo,
ich versuche gerade ein Programm welches sich ohne Warungen/Fehler für
einen AVR compilieren lässt auch auf meinem PC zum laufen zu bringen.
Compilieren kann ich es auch bereits auf dem PC, aber ich bekomme
diverse Warnungen, die ich mir so nicht erklären kann.
Als erstes wäre da
1 | const uint8_t end = strlen(textbuff);
|
Die Fehlermeldung ist:
Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen«
unterscheiden sich im Vorzeichenbesitz
Aber zwischen libc und avr-libc erkenne ich dort keinen Unterschied:
http://www.gnu.org/software/libc/manual/html_mono/libc.html#String%20Length
http://www.nongnu.org/avr-libc/user-manual/group__avr__string.html#ga17
Zum Zweiten musste ich die speziellen Funktionen um Konstanten aus dem
Flash zu lesen deaktivieren. Da aber der gleiche Quellcode auch
weiterhin im AVR laufen soll habe ich kurzerhand
1 | #define PGM_VOID_P void*
|
2 | #define PROGMEM
|
3 | #define memcpy_P memcpy
|
4 |
|
5 | u08 pgm_read_byte(u08 *data) {
|
6 | return *data;
|
7 | }
|
8 |
|
9 | u16 pgm_read_word(u16 *data) {
|
10 | return *data;
|
11 | }
|
in einer extra Datei definiert, die dann nur bei der Compilierung für
den PC eingebunden wird.
Dort bekomm ich aber stets Warnungen wie:
Warnung: Übergabe des Arguments 1 von »pgm_read_byte« entfernt
Kennzeichner von Zeiger-Ziel-Typ
Hat jemand Tips wie ich meinen Code korrieren muss so dass der Compiler
keinen Grund mehr zur Beschwerde hat?
Darüberhinaus, weiß jemand wie ich die Fehlermeldungen auf englisch
umstelle? Da sich mit den englischen Fehlermeldungen doch deutlich mehr
Problemfälle (und Lösungen) mit Google finden ließen.
Schon mal Danke im Voraus