为什么MPI_Send接受void*源
Why does MPI_Send accept void * source?
我想知道为什么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
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在c++类上调用void函数
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- std::function<void()> 接受参数
- 如何声明接受字符串、返回void的闭包的类型
- 将任意数据传递给不接受"void* userarg"的C++回调
- C/C++:是否可以将 Eclipse 项目设置配置为接受 void 指针而不对所有 Linux 发行版进行强制转换
- 需要接受教育:声明"void encrypt(char*, int)"具有不同的异常说明符"
- 将返回void的函数传递给接受void的函数
- 传递接受 void * 的成员函数
- C++14 自动 lambda 可以接受 Obj<std::tuple<void> > -- 但模板函数不能?
- 为什么MPI_Send接受void*源
- 我在我的程序中添加了一个void函数,它不接受任何参数,现在我的程序在运行时只返回一个空白终端
- 如何在c++ OCX模块中指定一个接受void*参数的函数
- 为什么函数接受void指针?
- 如何声明带有void *指针的c++原型,以便它可以接受任何指针类型
- c++中的malloc/free:为什么free不接受const void*,有没有更好的方法?
- std::unique_ptr<void> 不被 GCC 4.9.0 接受
- 错误 C2679:二进制'<<':找不到采用类型 'void' 的右侧操作数的运算符(或者没有可接受的转换)
- 将无符号char*缓冲区强制转换为可接受参数的可调用void指针