Mir ist noch etwas aufgefallen.
Ich kann die Grenzen beliebig verschieben.
Die Anzahl aller "cases" darf allerdings nicht größer als 16 sein...
Ist das so bei switch?
Hallo Leute,
ich habe ein kleines Problem, und benötige dazu Eure Hilfe.
Ich schreibe gerade an einem komplexeren Programmchen, und
bin jetzt dabei, alle WARNINGS zu "bereinigen".
BZW.: ALLE VIOLETTEN ZEILEN IM COMPILER VERMEIDEN
Jedoch verstehe ich eine Sache nicht!
Ich bekomme folgende "Fehlermeldung":
Ich habe auch schon herausgefunden, was dieses Warning verursacht.Code:C:\DOKUME~1\KAISER~1\LOKALE~1\Temp/cckiFr6h.s:8690: Warning: expression dangerous with linker stubs C:\DOKUME~1\KAISER~1\LOKALE~1\Temp/cckiFr6h.s:8691: Warning: expression dangerous with linker stubs
Und zwar eine SWITCH-Funktion:
Der Fehler liegt innerhalb case: [16; 47].Code:// -=> Funktionen Auswählen <=- void FUNCTION_EXE( uint8_t function ){ switch(function){ case 0: FUNC_BLINKER_L(); break; case 1: FUNC_BLINKER_L_WBA(); break; case 2: FUNC_BLINKER_R(); break; case 3: FUNC_BLINKER_R_WBA(); break; case 4: FUNC_WBA(); break; case 5: FUNC_WBA_BL(); break; case 6: FUNC_HUPE(); break; case 7: FUNC_ABBLENDLICHT(); break; case 8: FUNC_FERNLICHT(); break; case 9: FUNC_FERNLICHT_LH(25); break; case 10: FUNC_FERNLICHT_LH(50); break; case 11: FUNC_FERNLICHT_LH(75); break; case 12: FUNC_FERNLICHT_LH(100); break; case 13: FUNC_LICHTHUPE(25); break; case 14: FUNC_LICHTHUPE(50); break; case 15: FUNC_LICHTHUPE(75); break; /*case 16: FUNC_LICHTHUPE(100); break; case 17: FUNC_NEBELSCHEIN(); break; case 18: FUNC_NEBELSCHLUSS(); break; case 19: FUNC_NEBEL(); break; case 20: FUNC_WISCHERSTUFE( 1 ); break; case 21: FUNC_WISCHERSTUFE( 2 ); break; case 22: FUNC_WISCHERSTUFE( 3 ); break; case 23: FUNC_WISCHER_SWITCH(); break; case 24: FUNC_TIPPWISCHER(); break; case 25: FUNC_HECKWISCHER(); break; case 26: FUNC_WASCHER_V(); break; case 27: FUNC_WASCHER_V_WR(); break; case 28: FUNC_WASCHER_H(); break; case 29: FUNC_WASCHER_H_WR(); break; case 30: FUNC_FH_VL_UP_AUTO(); break; case 31: FUNC_FH_VL_DO_AUTO(); break; case 32: FUNC_FH_VL_UP_HOLD(); break; case 33: FUNC_FH_VL_DO_HOLD(); break; case 34: FUNC_FH_VR_UP_AUTO(); break; case 35: FUNC_FH_VR_DO_AUTO(); break; case 36: FUNC_FH_VR_UP_HOLD(); break; case 37: FUNC_FH_VR_DO_HOLD(); break; case 38: FUNC_SPECIAL0(); break; case 39: FUNC_SPECIAL1(); break; case 40: FUNC_SPECIAL2(); break; case 41: FUNC_SPECIAL3(); break; case 42: FUNC_SPECIAL4(); break; case 43: FUNC_SPECIAL5(); break; case 44: FUNC_SPECIAL6(); break; case 45: FUNC_SPECIAL7(); break; case 46: FUNC_SPECIAL8(); break;*/ case 47: FUNC_SPECIAL9(); break; } }
Sobald ich die "Ausklinkung" /* und */ verschiebe, taucht dieser Fehler auf.
So wie sie jetzt stehen, kommt sie nicht.
Jedoch gehen mir dabei einige Funktionen ab .
Ich hoffe, jemand von Euch kann mir da weiterhelfen.
Ich seh den Fehler einfah nicht!
Vielen Dank schon mal an dieser Stelle!!!
Gruß,
Franz
Mir ist noch etwas aufgefallen.
Ich kann die Grenzen beliebig verschieben.
Die Anzahl aller "cases" darf allerdings nicht größer als 16 sein...
Ist das so bei switch?
Gruß,
Franz
0-15+47 sind 17 cases...
Ich habe mal nach "Warning: expression dangerous with linker stubs" gesucht und u.a. folgendes gefunden:
Quelle: http://www.avrfreaks.net/index.php?n...topic&p=411472 (deutsch?, kA wer "Jörg" ist...)I talked to Jörg about this error , and this warning is unneeded.
Anscheinend ein Problem von GCC
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo mic,
herzlichen Dank für Deine Antwort!
Also einfach nicht beachten?!
Danke!
Gruß,
Franz
Ich würde es missachten wenn keine erkennbaren Fehlfunktionen bei case auftreten.
Möglicherweise eine andere gcc-Version installieren. Würde ich aber nur als letzte Möglichkeit betrachten: "Never touch a runing system"......bin jetzt dabei, alle WARNINGS zu "bereinigen".
Man könnte auch die switch-Anweisung aufsplitten:
Vielleicht noch ein if(function<16) dazu..Code:switch(function){ case 0: FUNC_BLINKER_L(); break; ... case 15: FUNC_LICHTHUPE(75); break; } switch(function){ case 16: FUNC_LICHTHUPE(100); break; ... case 31: FUNC_FH_VL_DO_AUTO(); break; } ...
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo !
Habe auch so ein ähnliches Problem, mein Projekt läuft zwar
Bekomme aber jede Menge Warnings z.b.
240: warning: implicit declaration of function 'itoa'Code:itoa(date.day,sDay,10); itoa(date.mon,sMon,10); itoa(date.Jahr,sJahr,10);
Bei allen anderen Funktionen die mit Strings zu tun haben, bekomme ich ebenfalls ähnliche Warnings.
Bin ein Quereinsteiger von Pascal auf C, sehe evtl. deshalb nicht was bei z.b itoa nicht passen soll.
Date ist ein struct
sDay etc. ist das:Code:typedef struct { uint16_t Jahr; uint8_t mon,day; boolean schaltjahr; } tdate;
vg. RudiCode:char sSek[2],sMin[2],sStd[2],sMon[2],sDay[2],sJahr[5];
RN-Mega2560 Modul - Sauter ISP USB Programmer
Das heißt, dass der Compiler die Funktion itoa an dieser Stelle noch nicht kennt. Du musst ihm davor erst mit #include <stdlib.h> sagen, dass du die Funktion itoa aus der stdlib verwenden willst.Zitat von rudirabbit
Lesezeichen