提升 mpi x64 警告"size_t to int"
Boost mpi x64 warning "size_t to int"
我已经成功地用mpi构建了Boost,但在x64平台下使用Boost mpi时收到了很多警告。我使用的是Boost 1.59.0+vs2015。请帮我摆脱这些警告
这是我的测试代码。
#include <boost/mpi/environment.hpp>
#include <boost/mpi/communicator.hpp>
#include <iostream>
namespace mpi = boost::mpi;
int main(int argc, char* argv[]) {
mpi::environment env(argc, argv);
mpi::communicator world;
std::cout << "I am process " << world.rank() << " of " << world.size()
<< "." << std::endl;
return 0;
}
其中一些警告看起来是这样的:
1>d:dependenciesboost_1_59_0boostmpidetailmpi_datatype_primitive.hpp(61) : warning C4267 : 'argument' : conversion from 'size_t' to 'int', possible loss of data
1>d:dependenciesboost_1_59_0boostmpidetailmpi_datatype_primitive.hpp(80) : warning C4267 : 'argument' : conversion from 'size_t' to 'int', possible loss of data
1>d:dependenciesboost_1_59_0boostmpidetailpacked_iprimitive.hpp(62) : warning C4267 : 'argument' : conversion from 'size_t' to 'int', possible loss of data
1>d:dependenciesboost_1_59_0boostmpidetailpacked_iprimitive.hpp(106) : warning C4267 : 'argument' : conversion from 'size_t' to 'int', possible loss of data
1>d:dependenciesboost_1_59_0boostmpidetailbinary_buffer_iprimitive.hpp(64) : warning C4267 : 'argument' : conversion from 'size_t' to 'int', possible loss of data
1>d:dependenciesboost_1_59_0boostmpidetailpacked_oprimitive.hpp(52) : warning C4267 : 'argument' : conversion from 'size_t' to 'int', possible loss of data
1>d:dependenciesboost_1_59_0boostmpidetailpacked_oprimitive.hpp(96) : warning C4267 : “初始化” : conversion from 'size_t' to 'int', possible loss of data
1>d:dependenciesboost_1_59_0boostmpidetailpacked_oprimitive.hpp(100) : warning C4267 : 'argument' : conversion from 'size_t' to 'int', possible loss of data
1>d:dependenciesboost_1_59_0boostmpidetailbinary_buffer_oprimitive.hpp(53) : warning C4267 : 'argument' : conversion from 'size_t' to 'int', possible loss of data
1>d:dependenciesboost_1_59_0boostmpidetailbinary_buffer_oprimitive.hpp(87) : warning C4267 : 'argument' : conversion from 'size_t' to 'int', possible loss of data
1> d:dependenciesboost_1_59_0boostarchivedetailoserializer.hpp(88) : note : see reference to function template instantiation'void boost::mpi::binary_buffer_oprimitive::save<char>(const std::basic_string<char, std::char_traits<char>, std::allocator<char>> &)'
1> d:dependenciesboost_1_59_0boostarchivedetailoserializer.hpp(232) : note : see reference to function template instantiation 'void boost::archive::save_access::save_primitive<Archive, T>(Archive &, const T &)'
1> with
1>[
1> Archive = boost::mpi::packed_oarchive,
1> T = std::string
1>]
IMHO MSVC C4267警告过于敏感。它甚至在将int转换为double时弹出。然而,正如@sjsam所评论的,在这种情况下,它可能是有效的。
当我确信转换是有效的时,我经常使用本地禁用警告:
#ifdef _MSC_VER
#pragma warning( push )
#pragma warning( disable : 4244 ) // implicit conversion, possible loss of data
#endif
在代码之前,并使用重新启用
#ifdef _MSC_VER
#pragma warning( pop )
#endif
如果您确信boost::mpi
值永远不会超过std::numeric_limits<int>::max()
,则将它们放在周围:
#include <boost/mpi/environment.hpp>
#include <boost/mpi/communicator.hpp>
因此您可以仅针对boost::mpi
禁用C4267警告。
相关文章:
- 为什么我会收到"invalid conversion from 'Queue*/Stack*' to 'int'"错误消息?
- memcpy unsigned char to int
- static_cast int to reference to int?
- Typo:bool to int conversion诱导的std :: ifstream在Linux下的错误
- 消除"conversion to std::vector<int>::size_type to int"警告
- 混淆从"array of int[]"到"pointer to int"的显式衰减?
- const int transforms to int*
- 将矩阵传递给函数。 "invalid conversion from 'int (*)[columns]' to 'int' [-fpermissive]"
- Char to Int - C++
- atoi() - from char to int
- ASCII to int to ASCII (ATMEGA 2560)
- C++ sendto() 给出"invalid conversion from ‘int (*)(int, int, int)throw ()’ to ‘int’"错误
- C++问题"cannot convert argument 1 from 'int [5]' to 'int'"
- 提升 mpi x64 警告"size_t to int"
- C++ void* to int* - get int pointed by int*
- 如何修复此错误错误"error C2440: '=' : cannot convert from 'int (*)[]' to 'int *' "?
- "cannot Convert vector<int>* to int"是什么意思?
- 为什么我会收到"cannot convert from Dequeu<int> to int"错误?
- "error: invalid conversion from 'int*' to 'int' function"
- 编译程序时出错C++:"error: cast from ‘double*’ to ‘int’ loses precision"