Answers

Question and Answer:

  Home  C Programming

⟩ 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.

 187 views

More Questions for you: