Problem with Geometry Handler definition syntax, X11R3

Walter Murray walter at hpclwjm.HP.COM
Fri Dec 29 05:38:28 AEST 1989


Geoffrey Leach writes:

[abridged to conserve bandwidth]

> typedef enum  { XtGeometryYes } XtGeometryResult;
> typedef XtGeometryResult (*XtGeometryHandler)();
> typedef struct _CompositeClassPart {
> 	XtGeometryHandler geometry_manager;
> }		CompositeClassPart;
> extern XtGeometryHandler foo();
> CompositeClassPart ccp	= { foo };
> /*
> **	And the result from the SVR3.2.2 cc is the warning:
> **	   warning: illegal pointer combination, op =
> **	The key to the complaint appears to be the fact that the
> **	typedef is a pointer to a procedure returning an enum.
> **	Is this a peculiarity of ATT's cc?  Anyone know of a workaround?
> */
----------
No, the compiler is correct.  The code is illegal.  Some compilers
won't complain; some will.  Any ANSI-conforming compiler should
complain.

My guess is that you didn't declare foo() the way you meant to.
Perhaps you meant:

   extern XtGeometryResult foo();

Warning:  I know nothing about the Xt intrinsics.  This is just a guess.

Walter Murray
---



More information about the Comp.lang.c mailing list