unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
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




  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).