为什么MPI_Send接受void*源

Why does MPI_Send accept void * source?

本文关键字:void 接受 Send MPI 为什么      更新时间:2023-10-16

我想知道为什么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会修改源吗?

我问这样的问题是因为我将MPI与C++一起使用,并将message.c_str()传递给MPI_Send函数,其中message的类型为std::string。这样,编译器就会抱怨。

MPI_Send会修改源吗?

不,不会的。

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

糟糕的设计。

MPI的第一个版本是在1989年C标准化后发布的,const可用作标准。

提交了一份将缺失的const添加到MPI_Send和其他MPI函数的提案,并被接受用于未来的MPI-3。

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