[comp.std.c] function prototype syntax

rfg@ics.uci.edu (Ronald Guilmette) (02/28/90)

In article <9002270016.AA02978@yamada-sun.UUCP> yamada-sun!eric@nosun.west.sun.com (Eric Hanchrow) writes:
>
>Here's an entire program which compiles just fine with gcc-1.37
>(Sparc, SunOS 4.0.c).
>	extern int fred(int a, int );
>I tried compiling the same program with Microsoft C 5.1, and it said
>unto me, quote,
>	junk3.c(1) : error C2059: syntax error : ','
>I promptly got on the phone to Microsoft to chew them out about this
>obvious ANSI non-compatibility.  The fella on the phone said, "No, the
>ANSI standard requires that you either name all the arguments in a
>function prototype, or none of them".  Therefore, he claimed, the
>error generaed by Microsoft was correct (although not very
>informative).
>
>Now, I don't have a copy of the Standard, but if the guy at Microsoft
>was right, then gcc should also complain when presented with this
>code.

I think that GCC is correct and that Microsoft is wrong.  I'm looking at
section 3.5.4.3 of the draft standard and I see no such restriction
stated there.  If there was such a restriction, it would belong in
3.5.4.3.

You had better call back that guy at Microsoft and insist that he cite
chapter and verse from the standard to back up his assertion.

I am cross posting this to comp.std.c where some *real* C standard guru's
may be willing to comment.

// Ron Guilmette (rfg@ics.uci.edu)
// C++ Entomologist
// Motto:  If it sticks, force it.  If it breaks, it needed replacing anyway.

henry@utzoo.uucp (Henry Spencer) (03/01/90)

In article <25EB0435.3408@paris.ics.uci.edu> rfg@ics.uci.edu (Ronald Guilmette) writes:
>In article <9002270016.AA02978@yamada-sun.UUCP> yamada-sun!eric@nosun.west.sun.com (Eric Hanchrow) writes:
>>I promptly got on the phone to Microsoft to chew them out about this
>>obvious ANSI non-compatibility.  The fella on the phone said, "No, the
>>ANSI standard requires that you either name all the arguments in a
>>function prototype, or none of them"...
>
>You had better call back that guy at Microsoft and insist that he cite
>chapter and verse from the standard to back up his assertion.

I see nothing in ANSI C (Oct 88 draft) that would support such an assertion.
Unless I've missed something subtle, in a function declaration (as opposed
to a definition), the names are optional on a parameter-by-parameter basis.
Given that Microsoft -- as well as everybody else -- has been claiming
"ANSI C compatibility" based on drafts rather than a final standard, it's
possible that he and/or Microslop as a whole may have gotten this idea
from an earlier draft and missed the liberalization of the rules.  I
don't remember the history of function declarations very well, but there
may have been such a restriction at one point.
-- 
"The N in NFS stands for Not, |     Henry Spencer at U of Toronto Zoology
or Need, or perhaps Nightmare"| uunet!attcan!utzoo!henry henry@zoo.toronto.edu