In order to cope with changes to the MPI Standard, there are both compile-time and run-time ways to determine which version of the standard is in use in the environment one is using.
The ``version'' will be represented by two separate integers, for the version and subversion:
 
  
In C and C++,  
 
    #define MPI_VERSION    1 
    #define MPI_SUBVERSION 2 
 
in Fortran,  
    INTEGER MPI_VERSION, MPI_SUBVERSION 
    PARAMETER (MPI_VERSION    = 1) 
    PARAMETER (MPI_SUBVERSION = 2) 
 
  
For runtime determination,
| MPI_GET_VERSION( version, subversion ) | |
| OUT version | version number (integer) | 
| OUT subversion | subversion number (integer) | 
 
  int MPI_Get_version(int *version, int *subversion) 
  
 
  MPI_GET_VERSION(VERSION, SUBVERSION, IERROR) 
 INTEGER VERSION, SUBVERSION, IERROR 
  
MPI_GET_VERSION is one of the few functions that can be called before MPI_INIT and after MPI_FINALIZE. Its C++ binding can be found in the Annex, Section C++ Bindings for New 1.2 Functions .