xcode构建失败隐式转换失去整数精度:'size_t'(又名'unsigned long')到'socklen_t'(又名'unsigned int')

Posted

技术标签:

【中文标题】xcode构建失败隐式转换失去整数精度:\'size_t\'(又名\'unsigned long\')到\'socklen_t\'(又名\'unsigned int\')【英文标题】:xcode build failing over Implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'socklen_t' (aka 'unsigned int')xcode构建失败隐式转换失去整数精度:'size_t'(又名'unsigned long')到'socklen_t'(又名'unsigned int') 【发布时间】:2021-02-16 12:49:08 【问题描述】:

这是我第一次在这里发帖,我也是 mac、xcode(12) 和 react native 的新手。即使是空的反应原生项目,我也无法使构建成功。我试图在模拟器版本之间切换并不断收到不同的错误,但总是使用 Flipper-Folly。 这发生在模拟器版本 14.3 中,在文件 SocketAddress.ccp 中:

sockaddr_storage tmp_sock;
  storage_.addr.toSockaddrStorage(&tmp_sock, port_);
  int rc = getnameinfo(
      (sockaddr*)&tmp_sock,
      sizeof(sockaddr_storage),
      buf,
      buflen, //this is where the error is: Implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'socklen_t' (aka 'unsigned int')
      nullptr,
      0,
      flags);
  if (rc != 0) 
    auto os = sformat(
        "getnameinfo() failed in getIpString() error = ", gai_strerror(rc));
    throw std::system_error(rc, std::generic_category(), os);

作为一个新手前端开发人员,我真的不知道我在看什么,任何帮助将不胜感激!

【问题讨论】:

这听起来像是警告,而不是错误。您是否使用将警告视为错误选项进行构建?另外,它的哪一部分让你感到困惑?它只是抱怨不同的类型(buflen 比预期的“大”)。 @DanM。我没有将警告视为错误来构建。让我感到困惑的部分就是全部。如前所述,我是新手。我所知道的是构建失败,当我单击错误图标查看它时,这就是它引导我的地方。现在我又看了看,只有当我查看左侧的列表时,我才看到实际的错误图标,这就是它所说的:/Users/Dana/Desktop/trial/ios/Pods/Headers/Private/Flipper- Folly/folly/synchronization/DistributedMutex-inl.h:1051:5: 'atomic_notify_one' 不可用 那么这不是构建失败的原因。这是一个警告。如果您搜索“隐式转换失去整数精度”,您将在该站点上获得无数示例,但它本身几乎是无害的 - 只是警告从更宽的 int 到更小的隐式转换,如果更大的数字可能会截断值不适合较小的类型(因此需要谨慎)。您可以static_cast<socklen_t>()它(使转换显式)摆脱警告(除非 buflen 实际上可能很大,那么您需要添加检查)。 我发现了一个类似问题的问题:***.com/questions/66189325/… 可能是 XCode12/react 错误,例如 github.com/facebook/react-native/issues/29633 。您可以尝试在那里报告问题并寻求帮助。 @DanM。感谢您的帮助。我会检查这些链接,希望能找到解决方案。 【参考方案1】:

我能够摆脱这个问题的唯一方法是在 Podfile 中禁用翻转器

# Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable these next few lines.
  # use_flipper!
  # post_install do |installer|
  #   flipper_post_install(installer)
  # end
end

【讨论】:

以上是关于xcode构建失败隐式转换失去整数精度:'size_t'(又名'unsigned long')到'socklen_t'(又名'unsigned int')的主要内容,如果未能解决你的问题,请参考以下文章

为啥Java在使用“加号”运算符时会执行从双精度到整数的隐式类型转换? [复制]

升级 JDBC 驱动程序后,Postgres 中到整数的隐式类型转换失败

从shell中更新/写入到文档的数字,会变为float类型,怎么解决

Xcode 是不是将 plist 隐式转换为二进制格式?

C++隐式类型转换

C++隐式类型转换