glib compilation GClosureMarshal: GValue *return_value, becomes GValue *return,
- From: Mike Hudson <mike_hudson_uk yahoo co uk>
- To: gtk-list gnome org
- Subject: glib compilation GClosureMarshal: GValue *return_value, becomes GValue *return,
- Date: Fri, 28 Mar 2008 00:45:15 +0000 (GMT)
Hi All,
I'm having a little trouble figuring out what is going on when I'm trying to build a test app with glib.
The problem is this - the first error I get when compiling (gcc 4.1.3, glib 2.14.5) is
In file included from /usr/local/include/glib-2.0/gobject/gobject.h:30,
from /usr/local/include/glib-2.0/glib-object.h:28,
from /usr/include/pango-1.0/pango/pango-types.h:27,
from /usr/include/pango-1.0/pango/pango-font.h:27,
from /usr/include/pango-1.0/pango/pango-attributes.h:26,
from /usr/include/pango-1.0/pango/pango.h:26,
from /usr/include/gtk-2.0/gdk/gdktypes.h:34,
from /usr/include/gtk-2.0/gdk/gdkcolor.h:32,
from /usr/include/gtk-2.0/gdk/gdkcairo.h:24,
from /usr/include/gtk-2.0/gdk/gdk.h:31,
from /usr/include/gtk-2.0/gtk/gtk.h:32,
from main_gtk.c:55:
/usr/local/include/glib-2.0/gobject/gclosure.h:46: error: expected ‘;’, ‘,’ or ‘)’ before ‘return’
I get similar errors in the same file and examination of the above location shows the following definition:
typedef void (*GClosureMarshal) (GClosure *closure,
GValue *return_value,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint,
gpointer marshal_data);
which doesn't look too bad. However, if I look at the preprocessor output (-E) the definition changes to
typedef void (*GClosureMarshal) (GClosure *closure,
GValue *return,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint,
gpointer marshal_data);
and I suppose that using a keyword "return" is not supported by gcc (anymore? I haven't tried this with an earlier gcc). I can manually change the argument (this occurs more than once, btw) so it isn't using a reserved word in the .i file and build from there, but it doesn't seem to be very elegant!
I've only just found this so haven't had the time to figure out if there is more information in the .i file I'm missing. If it is any use, here is the .i file a little above the GClosureMarshal definition:
# 233 "/usr/local/include/glib-2.0/gobject/gparam.h"
# 29 "/usr/local/include/glib-2.0/gobject/gobject.h" 2
# 1 "/usr/local/include/glib-2.0/gobject/gclosure.h" 1
# 27 "/usr/local/include/glib-2.0/gobject/gclosure.h"
# 1 "/usr/local/include/glib-2.0/gobject/gtype.h" 1
# 28 "/usr/local/include/glib-2.0/gobject/gclosure.h" 2
# 40 "/usr/local/include/glib-2.0/gobject/gclosure.h"
typedef struct _GClosure GClosure;
typedef struct _GClosureNotifyData GClosureNotifyData;
typedef void (*GCallback) (void);
typedef void (*GClosureNotify) (gpointer data,
GClosure *closure);
typedef void (*GClosureMarshal) (GClosure *closure,
GValue *return,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint,
gpointer marshal_data);
I can't see how this is happening, can anyone offer a solution/ explanation?
Regards,
Mike
___________________________________________________________
Yahoo! For Good helps you make a difference
http://uk.promotions.yahoo.com/forgood/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]