0

我有一个使用 GIO 的简单 cpp 文件。我已经删除了所有内容以显示我的编译错误:

这是我得到的错误:

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

这是完整的文件:

#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);
}

我已经看到其他使用 gio 的示例,并且在调用 G_IO_IN|G_IO_HUP 方面我正在做同样的事情。并且文档http://www.gtk.org/api/2.6/glib/glib-IO-Channels.html说我只需要包含,我做到了。

你能告诉我如何解决我的错误吗?

我能想到的一件事是我在 cpp 文件中执行此操作。但是 g_io_add_watch 是 ac 函数吗?

感谢您的任何帮助。我在这上面花了几个小时,但没有得到任何结果。

4

2 回答 2

1

你可以投射它

(GIOCondition) G_IO_IN|G_IO_HUP 

或者

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);
}
于 2010-03-26T07:41:53.963 回答
0

我想这是在标记错误,因为您必须使用进行严格类型检查的 CPP 编译器。

如果是 C 编译器,那应该主要是一个警告。

您可以对它进行类型转换 ((GIOCondition) G_IO_IN|G_IO_HUP) 或创建 GIOCondition 类型的变量并将其传递给函数。

于 2010-03-26T08:25:07.300 回答