Benötigen Sie Hilfe bei der Auflösung eines Compiler -Fehlers: Fehler: Ungültige Konvertierung von 'int' zu 'Giocondition'

StackOverflow https://stackoverflow.com/questions/2521699

  •  22-09-2019
  •  | 
  •  

Frage

Ich habe eine einfache CPP -Datei, die GIO verwendet. Ich habe alles ausgezogen, um meinen Kompilierfehler zu zeigen:

Hier ist der Fehler, den ich bekomme:

My.cpp:16: error: invalid conversion from ‘int’ to ‘GIOCondition’
make[2]: *** [My.o] Error 1

Hier ist die vollständige Datei:

#include <glib.h>

static gboolean
read_socket (GIOChannel *gio, GIOCondition condition, gpointer data)
{
  return false;
}


void createGIOChannel() {
  GIOChannel* gioChannel = g_io_channel_unix_new(0);
  // the following is the line causing the error:
  g_io_add_watch(gioChannel, G_IO_IN|G_IO_HUP, read_socket, NULL);
}

Ich habe ein anderes Beispiel mit GIO gesehen, und ich mache dasselbe, um g_io_in | g_io_hup aufzurufen. Und die Dokumentation http://www.gtk.org/api/2.6/glib/glib-io-channels.html, sagte, ich muss nur einschließen, was ich getan habe.

Können Sie mir bitte sagen, wie ich meinen Fehler beheben kann?

Eine Sache, an die ich denken kann, ist, dass ich das in einer CPP -Datei mache. Aber G_IO_ADD_WATCH ist eine Wechselstromfunktion?

Vielen Dank für jede Hilfe. Ich habe Stunden damit verbracht, bin aber nirgendwo gekommen.

War es hilfreich?

Lösung

Sie können es werfen

(GIOCondition) G_IO_IN|G_IO_HUP 

oder

void createGIOChannel() {
  GIOChannel* gioChannel = g_io_channel_unix_new(0);
  // the following is the line causing the error:
  GIOCondition cond = G_IO_IN|G_IO_HUP;
  g_io_add_watch(gioChannel, cond , read_socket, NULL);
}

Andere Tipps

Ich denke, es wird einen Fehler gekennzeichnet, da Sie einen CPP -Compiler verwenden müssen, der streng typecking macht.

Inhaftiert ein C -Compiler, das sollte meistens eine Warnung sein.

Sie können es typern ((giocondition) g_io_in | g_io_hup) oder eine Variable des Typs Giocondition erstellen und dasselbe an die Funktion übergeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top