2016-11-25 3 views

ответ

4

Как насчет использования макроса?

#include <stdint.h> 
#include <limits.h> 

#if SIZE_MAX == UCHAR_MAX 
    #define my_MPI_SIZE_T MPI_UNSIGNED_CHAR 
#elif SIZE_MAX == USHRT_MAX 
    #define my_MPI_SIZE_T MPI_UNSIGNED_SHORT 
#elif SIZE_MAX == UINT_MAX 
    #define my_MPI_SIZE_T MPI_UNSIGNED 
#elif SIZE_MAX == ULONG_MAX 
    #define my_MPI_SIZE_T MPI_UNSIGNED_LONG 
#elif SIZE_MAX == ULLONG_MAX 
    #define my_MPI_SIZE_T MPI_UNSIGNED_LONG_LONG 
#else 
    #error "what is happening here?" 
#endif 

Затем в коде, вы используете my_MPI_SIZE_T как тип данных, каждый раз, когда вы хотите передать данные типа size_t.