[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [mpi-21] Proposal EH2: add const keyword to the C bindings



On Fri, 2008-01-11 at 16:58 -0500, David Gingold wrote:
> [I'm still trying to catch up on all of the e-mail messages before  
> next week, so please excuse me if this has come up before.]
> 
> Here is a way in which adding "const" to the C bindings could break  
> an existing MPI program.  Suppose I write this:
> 
> 	#include <mpi.h>
> 
> 	void foo(void)
> 	{
> 	    typedef int (* sendfunc_t)(void *, int, MPI_Datatype, int, int,  
> MPI_Comm);
> 	    sendfunc_t s;
> 	    s = MPI_Send;
> 	}
> 
> If we re-define MPI_Send() so that its first argument has type "const  
> void *", then this code becomes incorrect.

Just for reference, the C++ standard itself does not consider the
description of function signatures in the standard library to be exact.
C++ standard library implementations are permitted to add extra,
defaulted parameters to library functions, for example. So, if a program
takes the address of a C++ standard library function, it isn't
guaranteed what the type of that function pointer will be.

I mention this because your example is holding MPI implementations to a
higher level of consistency than is expected of the standard libraries
shipped with one of MPI's underlying languages. Perhaps we don't want to
guarantee so much.

  - Doug