[libannodex-dev] C++ clients and the use of 'class' as structmember names.

Ben Martin monkeyiq at users.sourceforge.net
Fri Mar 10 11:04:25 EST 2006


I tried such a trick before for another project's headers. Unfortunately
it doesn't work. Extern "C" only really effects linkage, the stuff in
that block has to still parse ok as far as the c++ compiler is
concerned. 

foo$ cat extern_c_bad_decl.cpp
extern "C" {
    struct foo
    {
        char* a;
        int class;
    };
};

int main( int, char** )
{
    return -1;
}
foo$ g++ extern_c_bad_decl.cpp -o extern_c_bad_decl
extern_c_bad_decl.cpp:5: error: expected identifier before ‘;’ token
extern_c_bad_decl.cpp:5: error: multiple types in one declaration
extern_c_bad_decl.cpp:5: error: declaration does not declare anything


On Fri, 2006-03-10 at 10:50 +1100, Silvia.Pfeiffer at csiro.au wrote:
> Hi Ben,
> 
> Why can't you just use the
> 
> extern "C" {
> }
> 
> declaration around these C header files in your C++ code?
> 
> Silvia.
> 
> 
> > -----Original Message-----
> > From: libannodex-dev-bounces at lists.annodex.net 
> > [mailto:libannodex-dev-bounces at lists.annodex.net] On Behalf 
> > Of Ben Martin
> > Sent: Thursday, 9 March 2006 3:53 PM
> > To: libannodex-dev at lists.annodex.net
> > Subject: [libannodex-dev] C++ clients and the use of 'class' 
> > as structmember names.
> > 
> > 
> > Hi,
> >   I might have forgotten to report this a while back :/
> > 
> >   I'm using these versions.
> > libcmml-0.9.1-1.fc4
> > libannodex-0.7.3-3.fc4
> > 
> >   And there are a few struct members which have a name 'class' which
> > makes C++ clients of both libraries fail to compile without doing a
> > little hacking on the cmml/annodex headers. I'm not sure what you want
> > to rename this member too, so patches not attached...
> > 
> > Thanks.
> > 
> > /usr/include/annodex/anx_types.h:75: error: expected unqualified-id
> > before 'class'
> > /usr/include/annodex/anx_types.h:75: error: abstract 
> > declarator 'char*'
> > used as declaration
> > /usr/include/annodex/anx_types.h:75: error: expected ';' 
> > before 'class'
> > /usr/include/annodex/anx_types.h:104: error: expected unqualified-id
> > before 'class'
> > /usr/include/annodex/anx_types.h:104: error: abstract 
> > declarator 'const
> > char*' used as declaration
> > /usr/include/annodex/anx_types.h:104: error: expected ';' 
> > before 'class'
> > /usr/include/cmml.h:209: error: expected unqualified-id before 'class'
> > /usr/include/cmml.h:209: error: abstract declarator 'char*' used as
> > declaration
> > /usr/include/cmml.h:209: error: expected ';' before 'class'
> > /usr/include/cmml.h:244: error: expected unqualified-id before 'class'
> > /usr/include/cmml.h:244: error: abstract declarator 'char*' used as
> > declaration
> > /usr/include/cmml.h:244: error: expected ';' before 'class'
> > 
> > 
> 
> _______________________________________________
> libannodex-dev mailing list
> libannodex-dev at lists.annodex.net
> http://lists.annodex.net/cgi-bin/mailman/listinfo/libannodex-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 191 bytes
Desc: This is a digitally signed message part
Url : http://lists.annodex.net/archives/libannodex-dev/attachments/20060310/b20a709a/attachment.pgp


More information about the libannodex-dev mailing list