Warunung bei ausgabe mit g_print

  • Hallo,
    was ist an folgender Ausgabe falsch?
    Ich bekomme immer folgende Warning-Meldung
    warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘void**’ [-Wformat]


    und in der Konsole beim ausführen erscheint dann nur "Ausgewähltes Item -"


    Laut mehren Tutorials im Internet sollte das aber so Funktionieren

    Code
    void listitem_selected (GtkWidget *widget, gpointer *data)
    {
        g_print ("Ausgewähltes Item - %s\n", data);
    }


    Aufrufen tue ich dies mit


    Edited once, last by swoopo ().

  • Du musst das zweite Argument auf char* casten.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

  • Warnings haben ihren Sinn! Man sollte schon versuchen Warningfrei zu sein, denn meistens hat das später Auswirkungen. Man kann ENTSCHEIDEN eine Warnung zu ignorieren, das sollte man dann aber mit dem Wissen tun, WARUM die Warnung kommt.
    Also zu sagen: "Da ist eine Warnung, weiß nicht warum, ich ignoriere sie mal" ist ein Fehler!
    Bitte sprich also nicht von "bloß eine Warnung".


    Ich habe schon öfters von Bekannten Quellcode bekommen weil etwas nicht funktionierte. Und nachdem ich erstmal ein paar Warnungen behoben hatte, schwuppdiwupp war der Fehler wegen dem ich gefragt wurde von ganz alleine weg!


    C/C++ sind nicht sonderlich pingelich! Warnungen heißen meistens der Programmierer hat einen Fehler gemacht, aber es kompiliert.

    • Official Post

    Ich wollte auch eher darauf das immer von Fehlern gesprochen wird (es wird nicht compiliert) obwohl das Teil eindeutig Warnung (es wird compiliert) heisst. Das man Warnungen abstellen sollte, ist klar.

  • Stimmt. Aber trotzdem sollte man sich Warnungen immer genauer ansehen, denn es können ja doch Fehler vorliegen. Und dann sollte man die Warnungen beseitigen, denn ansonsten erkennt man bei einer größeren Anzahl von Wanrungen nicht mehr ob eine neue und vielleicht valide Warnung neu dazugekommen ist. Vielleicht in einem kleinen Projekt nicht so notwendig ...


    EDIT: Too late ... Ihr habt mich ja schon oben bestätigt

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

    Edited once, last by framp ().

  • Das es eine Warnung ist, dass ist mir bekannt. Hatte es auch in meinen eigentlichen Post geschrieben, dass es sich um eine Warnung handelt. Warum ich Fehler in der Überschrift geschrieben habe weiß ich nicht mehr. Habe sie aber geändert.


    Den Code habe ich auch geändert. Aber das Problem bleibt das es nicht ausgegeben wird.

  • Stimmt. Void** kommt an und char* wird verlangt. Dann muss es *(char**) sein.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

  • mhh entweder bekomme ich heute nichts gebacken oder es liegt an der Uhrzeit
    aber jetzt komme der FEHLER


    Code
    GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed