Interview Questions

I have seen function declarations that look like this

C Interview Questions and Answers


(Continued from previous question...)

I have seen function declarations that look like this

Q: I've seen function declarations that look like this:
extern int func __((int, int));
What are those extra parentheses and underscores for?

A: 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.

(Continued on next question...)

Other Interview Questions