extern "C" applied liberally?

Jay K jay.krell@cornell.edu
Tue Nov 16 01:51:00 GMT 2010


I know it is debatable and I could be convinced otherwise, but I would suggest:
 
 
 
#ifdef __cplusplus
extern "C" {
#endif
 
...


#ifdef __cplusplus
} /* extern "C" */
#endif
 
 
be applied liberally in gcc.
Not "around" #includes, it is the job of each .h file, and mindful of #ifdefs (ie: correctly).
 
 
Rationale:
  Any folks that get to see the mangled names, debugging, working on binutils, whatever, are saved from them.
     They are generally believed to be ugly, right? Yeah yeah, not a technical argument.
 
  For some reason, I wasn't able to set breakpoints in gdb on MacOSX otherwise, though this doesn't make sense and a small example didn't reproduce the behavior. I have since applied this to 300+ files in a 4.5.1 fork -- not all of them just out of time/laziness. (I tried and failed to automate it.)
 
 
 
I think it is a good idea for any C or historically C code when moving to a C++ compiler.
  I have done that with a few small/medium sized code bases.
 
 
 
They could/would be removed as templates/function overloads/operator overloading are introduced.
Or such sections of code/declarations could have extern "C++" { } around them (not a well known feature, but ok.)
 
 
 
 - Jay 		 	   		  



More information about the Gcc mailing list