[cfe-dev] objc_selector definition problem

David Chisnall csdavec at swansea.ac.uk
Sun Feb 24 07:07:47 PST 2008


Hi,

In Sema.cpp, the SEL type is declared as a pointer to a struct  
objc_selector, which is an opaque type.  There seems to be a problem  
defining this.  When compiling a trivial Objective-C program[1] the  
following error appears:

/usr/include/objc/objc.h:63:14: error: incomplete definition of type  
'objc_selector'
     return s1->sel_id == s2->sel_id;
            ~~^

It appears that the objc_selector type is still treated as opaque,  
even though it is now defined.  The objc.h header contains:

typedef const struct objc_selector
{
   void *sel_id;
   const char *sel_types;
} *SEL;

inline static BOOL
sel_eq (SEL s1, SEL s2)
{
   if (s1 == 0 || s2 == 0)
     return s1 == s2;
   else
     return s1->sel_id == s2->sel_id;
}

The penultimate line in this listing is the one which raises the  
error, even though the objc_selector type is defined immediately  
before the function.

Note: This compiles fine as a C program, where the implicit definition  
of objc_selector is not present.

David

[1]
#include <objc/objc.h>

int main(void)
{
     return 0;
}




More information about the cfe-dev mailing list