C Interview Questions and Answers

 

I have seen function declarations that look like this

I've seen function declarations that look like this:



extern int func __((int, int));



What are those extra parentheses and underscores for?





They're part of a trick which allows the prototype part of the function declaration
to be turned off for a pre-ANSI compiler. Somewhere else is a conditional definition
of the __ macro like this:



#ifdef __STDC__



#define __(proto) proto



#else



#define __(proto) ()



#endif





The extra parentheses in the invocation



extern int func __((int, int));



are required so that the entire prototype list (perhaps containing many commas)
is treated as the single argument expected by the macro.

Posted by:Richards