MPI constants have the same value in all languages, unless specified otherwise. This does not apply to constant handles ( MPI_INT, MPI_COMM_WORLD, MPI_ERRORS_RETURN, MPI_SUM, etc.) These handles need to be converted, as explained in Section Transfer of Handles . Constants that specify maximum lengths of strings (see Section for a listing) have a value one less in Fortran than C/C++ since in C/C++ the length includes the null terminating character. Thus, these constants represent the amount of space which must be allocated to hold the largest possible such string, rather than the maximum number of printable characters the string could contain.
 
 
 
 Advice to users.  
 
This definition means that it is safe in C/C++ to allocate a buffer to receive  
a string using a declaration like  
 
char name [MPI_MAX_NAME_STRING];( End of advice to users.)
Also constant ``addresses,'' i.e., special values for reference arguments that are not handles, such as MPI_BOTTOM or MPI_STATUS_IGNORE may have different values in different languages.
 
 
 
 Rationale.  
 
The current  MPI standard specifies that  MPI_BOTTOM can be  
used in initialization expressions in C, but not in Fortran.  Since  
Fortran does not normally support call by value, then  
 MPI_BOTTOM must be in Fortran the name of a predefined  
static variable, e.g., a variable in an  MPI declared  COMMON  
block. On the other hand, in C, it is natural to take  
 MPI_BOTTOM = 0 (Caveat: Defining  MPI_BOTTOM = 0  
implies that  NULL pointer cannot be distinguished from  
 MPI_BOTTOM; it may be that  MPI_BOTTOM = 1 is better ...)  
Requiring that the Fortran and C values be the same will complicate  
the initialization process.  
 ( End of rationale.)