On Wed, Nov 9, 2011 at 14:49, Lisandro Dalcin <dalcinl at gmail.com> wrote:
> In my 64 bits Fedora 15, sizeof(NULL) is 8 with g++ and icpc. But I'm > not sure all compilers/platforms will work like that. In those cases, > you could conditionally define to 0 or 0L depending of sizeof(void*) > The C++ standard not specify that, when interpreted without conversion to a specific pointer type (e.g. variadic function) that it have the correct size. GCC works around this by adding __null. /* A null pointer constant. */ #if defined (_STDDEF_H) || defined (__need_NULL) #undef NULL /* in case <stdio.h> has defined it. */ #ifdef __GNUG__ #define NULL __null #else /* G++ */ #ifndef __cplusplus #define NULL ((void *)0) #else /* C++ */ #define NULL 0 #endif /* C++ */ #endif /* G++ */ #endif /* NULL not defined and <stddef.h> or need NULL. */ #undef __need_NULL If this header is used by a non-GCC compiler, it will use the definition 0 instead of __null. (That is supposed to be supported.) We could test for this behavior of NULL, but it feels like an incomplete solution to me. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20111109/6b28ab9e/attachment.html>