Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 01 Feb 2002 09:52:30 -0700 (MST)
From:      "M. Warner Losh" <imp@village.org>
To:        bde@zeta.org.au
Cc:        estabur@hotmail.com, arch@FreeBSD.ORG
Subject:   Re: __P macro question
Message-ID:  <20020201.095230.12730857.imp@village.org>
In-Reply-To: <20020202012011.U3304-100000@gamplex.bde.org>
References:  <F81KDSpCW4uFWjkOTGk0000065d@hotmail.com> <20020202012011.U3304-100000@gamplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20020202012011.U3304-100000@gamplex.bde.org>
            Bruce Evans <bde@zeta.org.au> writes:
: > 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.
: 
: Right.  I don't trust anyone who is not familiar with this point to
: globally remove __P.

So do I qualify?  We all know that the original poster of the comment
didn't understand this subtlty. :-)

: People removing __P should also be familiar with the gcc conterpoint:
: 
:     void foo(char);		/* Wrong; should be "void foo(int);". */
:     void foo(c) char c; {}
: 
: gives undefined behaviour in Standard C, but gcc defines its behaviour
: to be do-what-naive-programmer-expects.  This is only safe provided the
: wrong prototype for foo() is always in scope before foo() is called;
: otherwise foo() is sometimes passed an int and sometimes a char, but
: foo() expects to be passed either an int or a char depending on whether
: the wrong prototype is in scope for the function body.

Alternatively:
	void foo(char);
	void foo(char c) { }
would be right. :-)  I've already found three places where this didn't
hold.

So what is the right style:

1) ^static void foo(char);
2) ^static<tab>void foo(char);
3) ^static void<tab>foo(char);
4) ^static<tab>void<tab>foo(char);

Most of the tree I've looked at so far uses #1.  I'm a little
reluctant to change that part of things on this pass.

Warner

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?20020201.095230.12730857.imp>