Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 01 Feb 2002 11:37:54 +0200
From:      "Juha Juntunen" <estabur@hotmail.com>
To:        arch@FreeBSD.ORG
Subject:   Re: __P macro question
Message-ID:  <F81KDSpCW4uFWjkOTGk0000065d@hotmail.com>

next in thread | raw e-mail | index | archive | help
>>>static int  sendfile __P((struct printer *pp, int type, char *file,
>>>                           int format));
>>>
>>>for a procedure declaration of:
>>>      static int
>>>      sendfile(pp, type, file, format)
>>>              struct printer *pp;
>>>              int type;
>>>              char *file;
>>>              char format;
>>>      {
>>
>>That's *EXCATLY* why I'm converting the old, but still legal in c89,
>>style to new style.  You get warnings that you didn't get before.
>
>The compiler is broken, if it accepts the second when the
>first prototype is in scope.
>
>It's a broken compiler, period.

How is the compiler broken, question mark.

Are you perhaps objecting to the type of the last parameter
("int format" vs "char format")?  Please see Ansi Classic, chapter
"3.5.4.3 Function declarators (including prototypes)", in particular
page 69 lines 19-22.  In C99, 6.7.5.3 paragraph #11 seems to apply
similarly.

If you
	- define "__P" suitably
	- add "struct printer;" to file scope
	- add "}" to complete the function definition
to me, the above code fragment seems to constitute a valid
ANSI C89 translation unit.

++sja


_________________________________________________________________
Send and receive Hotmail on your mobile device: http://mobile.msn.com


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F81KDSpCW4uFWjkOTGk0000065d>