Strange function declaration in header file.

Oct 16, 2013 at 2:56pm
I'm looking at a header file like below, and it has a class called foo and down at the bottom is a function declaration called boo, and it has the class foo in front of the function declaration, and it's wrapped around extern "C". Why did they do this? I've never seen a class in front of a function declaration. Was this for compiling or linking.

/*header file*/
class foo who
{
}
extern "C"
{
#endif

foo short boo ( ) ;


#ifdef __cplusplus
}

[/code]
Last edited on Oct 16, 2013 at 3:00pm
Oct 16, 2013 at 5:18pm
You didn't paste all of the code.

This is for linking. In C++, the complexities of overloading functions and being within namespaces and classes and such means that the exported names of functions look 'mangled', it's called name mangling. To be compatible with C, you can mark a function extern "C" and it will be exported without the mangled name, but this means you can run into name collisions.
Topic archived. No new replies allowed.