#import struct pair { double x; double y; }; @interface SomeClass : NSObject - (struct pair)doit; @end @implementation SomeClass - (struct pair)doit { return (struct pair){42, 69}; } @end struct pair foo (SomeClass *q) { return [q doit]; } extern void hey (SomeClass *object, SEL sel); int main (void) { SomeClass *q = [[SomeClass alloc] init]; struct pair r; r = [q doit]; printf("We got { %g, %g }\n", r.x, r.y); hey(q, @selector(doit)); return 0; } // cc -o foo foo.m bar.c -lobjc && ./foo