为什么MPI_Send接受void * source?

时间:2013-07-21 13:39:05

标签: c++ c mpi

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

int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag,
  MPI_Comm comm)

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

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

1 个答案:

答案 0 :(得分:8)

  

MPI_Send会修改源吗?

不,它不会。

  

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

糟糕的设计。

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

向未来的MPI-3提交并接受了将遗失的const添加到MPI_Send和其他MPI功能的提案。

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