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) () #endifThe 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.
Additional links: further reading