From: Ken Raeburn <raeburn@raeburn.org>
To: Greg Troxel <gdt@ir.bbn.com>
Cc: "Ludovic Courtès" <ludo@gnu.org>, guile-devel@gnu.org
Subject: Re: i guess we're frozen & stuff
Date: Tue, 11 Aug 2009 14:14:19 -0400 [thread overview]
Message-ID: <E47B040D-AFF9-4D39-8A07-FF695583A7A1@raeburn.org> (raw)
In-Reply-To: <rmiab26cme0.fsf@fnord.ir.bbn.com>
On Aug 11, 2009, at 13:04, Greg Troxel wrote:
> So it seems that NULL is expanding to (void *) 0, and "sizeof (void *)
> 0" is not legit. AFAIK sizeof is specified to work on variables and
> types, and NULL is neither a variable nor a type.
No, sizeof should work fine on expression values as well. I'm not
quite sure about the question of syntax here -- sizeof's operand may
be "an expression or the parenthesized name of a type". (So "sizeof
var" is just a special case of the expression version, and doesn't
require parentheses.) But if the expression starts with a
parenthesized type because it's a cast... looking at the grammar, I'd
think it would be valid, but that would have implications for code
such as "sizeof (unsigned long) + 3" ... is that a single expression
(3UL) you're taking the size of, or a sum involving the size of a type?
Certainly "sizeof ((void *)0)", with the extra parens, works, and I
think I've nearly always seen pointer versions of "NULL" using the
enclosing parentheses, perhaps because of just this issue. Assuming
"sizeof (TYPE) EXPR" isn't valid, I'd call it a defect in your
system's definition of NULL, though I wouldn't go so far as to call it
non-compliant. One could also argue that an expression provided to
sizeof should always be parenthesized unless you know the syntax of it
won't be altered by sticking "sizeof" in front, e.g., "sizeof(3+4)"
instead of "sizeof 3+4".
However, they're testing for a POSIX 2008 requirement that C99 and
POSIX 2004 implementations need not meet, namely that NULL be of type
"void *" instead of any null pointer constant (e.g., "0"). I think
requiring POSIX 2008 support for Guile and anything that builds on it
seems like a bad idea. I haven't looked at the libunistring code to
see why it might be relevant, but it seems like a pretty gratuitous
imposition to me. The only benefit of it I can see is that a variadic
function can then take NULL as an argument without casting to char*;
is that worth refusing to support other systems?
> Is NULL something else on Linux?
I'm not sure if it's GNU libc or GCC, but I'm getting "((void *)0)".
Ken
next prev parent reply other threads:[~2009-08-11 18:14 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-10 19:41 i guess we're frozen & stuff Andy Wingo
2009-08-10 21:08 ` Mike Gran
2009-08-10 21:16 ` Andy Wingo
2009-08-10 21:37 ` Ludovic Courtès
2009-08-11 11:34 ` Greg Troxel
2009-08-11 13:59 ` Ken Raeburn
2009-08-11 14:45 ` Ken Raeburn
2009-08-11 15:36 ` Ludovic Courtès
2009-08-11 15:50 ` Ken Raeburn
2009-08-12 22:42 ` Andy Wingo
2009-08-11 15:34 ` Ludovic Courtès
2009-08-12 22:41 ` Andy Wingo
2009-09-16 19:00 ` Andy Wingo
2009-09-25 21:59 ` Ken Raeburn
2009-09-26 15:45 ` Mike Gran
2009-09-26 22:36 ` Ken Raeburn
2009-09-26 23:11 ` Mike Gran
2009-09-26 21:02 ` Ludovic Courtès
2009-09-26 22:26 ` Ken Raeburn
2009-09-27 9:10 ` Ludovic Courtès
2009-09-27 10:01 ` Ken Raeburn
2009-09-28 7:39 ` Ludovic Courtès
2009-09-28 17:22 ` Neil Jerram
2009-09-28 18:48 ` Ludovic Courtès
2009-09-28 22:42 ` Neil Jerram
2009-09-28 23:21 ` Bug #27457 (“Threads, mutexes, and critical sections”) Ludovic Courtès
2009-09-30 20:59 ` (no subject) Neil Jerram
2009-10-01 17:21 ` Bug #27457 (“Threads, mutexes, and critical sections”) Ludovic Courtès
2009-10-01 21:05 ` (no subject) Neil Jerram
2009-10-01 19:45 ` Bug #27457 (“Threads, mutexes, and critical sections”) Ken Raeburn
2009-10-01 20:44 ` (no subject) Neil Jerram
2009-09-28 23:27 ` i guess we're frozen & stuff Ken Raeburn
2009-09-28 23:08 ` Ken Raeburn
2009-08-26 22:18 ` Neil Jerram
2009-08-11 12:29 ` Greg Troxel
2009-08-11 15:48 ` Mike Gran
2009-08-11 15:54 ` Ludovic Courtès
2009-08-11 16:13 ` Mike Gran
2009-08-11 17:01 ` Ludovic Courtès
2009-08-11 17:49 ` Mike Gran
2009-08-11 17:04 ` Greg Troxel
2009-08-11 18:14 ` Ken Raeburn [this message]
2009-08-11 20:34 ` Ludovic Courtès
2009-08-11 21:58 ` Greg Troxel
2009-08-11 22:46 ` Ludovic Courtès
2009-08-12 13:08 ` Greg Troxel
2009-08-12 14:38 ` Ludovic Courtès
2009-08-12 16:36 ` Greg Troxel
2009-08-11 18:15 ` Ludovic Courtès
2009-08-11 18:17 ` Greg Troxel
2009-08-11 20:26 ` Ludovic Courtès
2009-08-11 22:07 ` Greg Troxel
2009-08-11 17:24 ` Greg Troxel
2009-08-11 19:10 ` i18n issues on NetBSD Ludovic Courtès
2009-08-11 22:05 ` Greg Troxel
2009-08-11 22:58 ` Ludovic Courtès
2009-08-11 17:46 ` i guess we're frozen & stuff Juhani Viheräkoski
2009-08-11 18:01 ` Mike Gran
2009-08-11 20:31 ` Ludovic Courtès
2009-08-11 13:27 ` Greg Troxel
2009-08-11 13:39 ` unsigned char confusion Greg Troxel
2009-08-11 15:23 ` Mike Gran
2009-08-11 17:05 ` i guess we're frozen & stuff Ken Raeburn
2009-08-11 20:27 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E47B040D-AFF9-4D39-8A07-FF695583A7A1@raeburn.org \
--to=raeburn@raeburn.org \
--cc=gdt@ir.bbn.com \
--cc=guile-devel@gnu.org \
--cc=ludo@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).