-         

Ergebnis 1 bis 7 von 7

Thema: WINAVR: Warning: expression dangerous with linker stubs

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795

    WINAVR: Warning: expression dangerous with linker stubs

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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":

    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
    Ich habe auch schon herausgefunden, was dieses Warning verursacht.
    Und zwar eine SWITCH-Funktion:

    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;
    		}
    	}
    Der Fehler liegt innerhalb case: [16; 47].
    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

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    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

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    0-15+47 sind 17 cases...

    Ich habe mal nach "Warning: expression dangerous with linker stubs" gesucht und u.a. folgendes gefunden:

    I talked to Jörg about this error , and this warning is unneeded.
    Quelle: http://www.avrfreaks.net/index.php?n...topic&p=411472 (deutsch?, kA wer "Jörg" ist...)

    Anscheinend ein Problem von GCC

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    Hallo mic,

    herzlichen Dank für Deine Antwort!
    Also einfach nicht beachten?!

    Danke!
    Gruß,
    Franz

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Ich würde es missachten wenn keine erkennbaren Fehlfunktionen bei case auftreten.

    ...bin jetzt dabei, alle WARNINGS zu "bereinigen".
    Möglicherweise eine andere gcc-Version installieren. Würde ich aber nur als letzte Möglichkeit betrachten: "Never touch a runing system"...

    Man könnte auch die switch-Anweisung aufsplitten:

    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;
    }
    ...
    Vielleicht noch ein if(function<16) dazu..

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    15.02.2008
    Beiträge
    27
    Hallo !
    Habe auch so ein ähnliches Problem, mein Projekt läuft zwar
    Bekomme aber jede Menge Warnings z.b.

    Code:
    itoa(date.day,sDay,10);
    itoa(date.mon,sMon,10);
    itoa(date.Jahr,sJahr,10);
    240: warning: implicit declaration of function 'itoa'

    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

    Code:
    typedef struct { 
               uint16_t Jahr;
    		   uint8_t mon,day; 
    		   boolean schaltjahr;
               } tdate;
    sDay etc. ist das:
    Code:
    char sSek[2],sMin[2],sStd[2],sMon[2],sDay[2],sJahr[5];
    vg. Rudi
    RN-Mega2560 Modul - Sauter ISP USB Programmer

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Zitat Zitat von rudirabbit
    240: warning: implicit declaration of function 'itoa'

    Bei allen anderen Funktionen die mit Strings zu tun haben, bekomme ich ebenfalls ähnliche Warnings.
    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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •