On Wed, Nov 9, 2011 at 15:15, Satish Balay <balay at mcs.anl.gov> wrote:
> <petscsys.h> > extern void* PETSC_NULL > <init.c> > static void* PETSC_NULL=0L [or null or nullptr - based on configure > determined flags] > You must not really mean "static". > > [so as to avoid language/functionality based #def() code in petscsys.h > - that could potentially cause issues like what we had with isinf() > stuff] > The problem is that C++ does not allow implicit conversion from void* to a different pointer type. Note how PetscMalloc needs an explicit cast. It is not possible to write int *x = malloc(sizeof(int)); in C++, you need int *x = (int*)malloc(sizeof(int)); If we unconditionally define PETSC_NULL to be (void*)0, then we cannot avoid requiring the user to make that cast all over the place. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20111109/a0777269/attachment.html>
