Is ```MPI_REAL, MPI_INTEGER, MPI_COMPLEX, etc``` portable?

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,