Date: Sun, 23 Sep 2001 20:45:14 +0200 From: Erik Trulsson <ertr1013@student.uu.se> To: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/usr.sbin/sysinstall command.c config.c Message-ID: <20010923204513.A48432@student.uu.se> In-Reply-To: <200109231749.NAA01962@glatton.cnchost.com> References: <20010923180124.I13390-100000@delplex.bde.org> <200109231749.NAA01962@glatton.cnchost.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Sep 23, 2001 at 10:49:28AM -0700, Bakul Shah wrote: > > > Use '%p' when printing out the address of a function. > > > sizeof(int) != sizeof(long) > > > > %p is for printing pointers of type "void *". It is unsuitable for > > printing arbitrary pointers to objects. It is especially unsuitable > > for printing pointers to functions. > > I have an old (1997) working draft of C9X which says > > 6.2.2.3 Pointers > > [#1] A pointer to void may be converted to or from a pointer > to any incomplete or object type. A pointer to any > incomplete or object type may be converted to a pointer to > void and back again; the result shall compare equal to the > original pointer. > > Since any object ptr may be converted to %p, you can do, e.g. > > printf("...%p...", ..., (void*)&some_function, ...); > > But you seem to be saying this is not be a valid conversion. > Have things changed since then or is a function not > considered an "object"? I would appreciate a C standard > reference ( i.e. chapter and verse!) that shows this is > invalid. In general function pointers cannot be converted to/from non-function pointers. Functions are indeed not considered objects. In a somewhat more recent (Jan 1999) draft of C9X 'object' is defined as follows: 3.15 [#1] object region of data storage in the execution environment, the contents of which can represent values [#2] NOTE When referenced, an object may be interpreted as having a particular type; see 6.3.2.1. -- <Insert your favourite quote here.> Erik Trulsson ertr1013@student.uu.se To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010923204513.A48432>