Just curious, does the MPI constants, those `MPI_REAL, MPI_INTEGER, MPI_COMPLEX, etc`

the same type for all the machine (therefore portable)?

https://www.mpich.org/static/docs/v3.3/www3/Constants.html

Like, I take from the above webpage , the MPI constants and their correspondence to Fortran intrinsic type,

```
Fortran datatypes
MPI_REAL - REAL
MPI_INTEGER
INTEGER
MPI_LOGICAL
LOGICAL
MPI_DOUBLE_PRECISION
DOUBLE PRECISION
MPI_COMPLEX
COMPLEX
MPI_DOUBLE_COMPLEX
complex*16 (or complex*32) where supported.
The following datatypes are optional MPI_INTEGER1 - integer*1 if supported
MPI_INTEGER2
integer*2 if supported
MPI_INTEGER4
integer*4 if supported
MPI_INTEGER8
integer*8 if supported
MPI_INTEGER16
integer*16 if supported
MPI_REAL4
real*4 if supported
MPI_REAL8
real*8 if supported
MPI_REAL16
real*16 if supported
MPI_COMPLEX8
complex*8 if supported
MPI_COMPLEX16
complex*16 if supported
MPI_COMPLEX32
complex*32 if supported
```

If those `MPI_XXX`

constants the portable, then perhaps I do not need to use `mpi_sizeof()`

to define mine portable types anymore, like here,