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 Defined Constants for a listing) have a value one less in Fortran than C since in C the length includes the null terminating character. Thus, these constants represent the amount of space that 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 to allocate a buffer to receive a string using a declaration like
( 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 in Fortran must be 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.
See the advice to implementors in the Datatypes subsection in
Section MPI Opaque Objects)
Requiring that the Fortran and C values be the same will complicate
the initialization process.
( End of rationale.)