为什么MPI_Send接受void*source?

Con*_* He 2 c c++ mpi

我想知道为什么签名MPI_Send如下:

int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag,
  MPI_Comm comm)
Run Code Online (Sandbox Code Playgroud)

第一个参数是类型void *.为什么是类型的第一个参数void *而不是const void *.会MPI_Send修改来源吗?

我问这样的问题,因为我使用MPI和C++并传递message.c_str()message类型的MPI_Send函数std::string.通过这种方式,编译器抱怨.

oua*_*uah 8

MPI_Send会修改源吗?

不,它不会.

我的问题是为什么第一个参数是void*而不是const void*.

糟糕的设计.

MPI的第一版在1989年标准化后发布,并const作为标准提供.

一项提案,缺少添加constMPI_Send和其他MPI函数提交并接受未来的MPI-3.

https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/140