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