我宁可拖动此警告,也不要搞砸部署错误的转换。 在这行XCode8(Swift3,iOS10).c文件:
SHA1Update(&theSHA1Context, (size_t)inText, inTextLength);
//void SHA1Update(SHA1_CTX* context, u_int8_t* data, unsigned int len)
我收到了这个警告
"Implicit conversion loses integer precision: 'size_t' to 'u_int32_t' (aka 'unsigned_int')
我不是这个领域的专家,所以我宁愿采取精明的建议,满足XCode并发出警告的最佳方法是什么?
答案 0 :(得分:0)
如果变量名称是任何东西,那就错了:
points
答案 1 :(得分:0)
2个问题
长度字段应为unsigned
,比平台上的size_t
窄 - 因此会出现警告。要缩小值,请使用强制转换并使警告静音。但如果目标无法表现,施法可能会导致灾难性问题。建议使用测试。
//void SHA1Update(SHA1_CTX* context, u_int8_t* data, unsigned int len)
// narrowing -----v
// SHA1Update(&theSHA1Context, (size_t)inText, inTextLength);
size_t inTextLength;
assert(inTextLength <= UINT_MAX);
SHA1Update(&theSHA1Context, (size_t)inText, (unsigned) inTextLength);
缓冲区inText
的大小写肯定是错误的。删除它。
SHA1Update(&theSHA1Context, inText, (unsigned) inTextLength);
答案 2 :(得分:0)
在尝试建议后,此更改使编译器满意,并且OAuth继续正常工作:
// List for filter.
RecyclerView filterList;