当前位置:网站首页 > R语言数据分析 > 正文

zipentry.getsize不可信解决(zip entry size is too large)



“initializing”:无法从“type1”转换为“type2”
“conversion”:无法从“type1”转换为“type2”

编译器无法从 隐式转换为 ,也不能使用指定的强制转换或转换运算符。

当编译器无法从一种类型转换为另一种类型时,编译器会生成 C2440,无论是隐式转换还是使用指定的强制转换或转换运算符。 有多种情况会生成此错误。 我们已在“示例”部分列出了一些常见项。

如果在设置编译器一致性选项 时尝试通过在 C++ 代码中使用字符串文本来初始化非 const(或 ),则可能会导致 C2440。 在 C 中,字符串文本的类型是 数组,但在 C++ 中,是 数组。 此示例生成 C2440:

 
  

在 C++20 或 下,UTF-8 文本字符或字符串(例如 或 )分别属于 或 类型。 此示例演示如何在 C++17 和 C++20 之间更改编译器行为:

 
  

如果尝试将指向成员的指针转换为 ,可能会看到 C2440。 下一个示例生成 C2440:

 
  

如果尝试从仅前向声明但未定义的类型进行强制转换,编译器会发出 C2440。 此示例生成 C2440:

 
  

下一个示例的第 15 行和第 16 行上的 C2440 错误由 消息限定。 UDT 是用户定义的类型,例如类、struct 或联合。 当前向声明的返回类型中指定的 UDT 的调用约定与 UDT 的实际调用约定冲突以及涉及函数指针时,会导致此类不兼容错误。

在此示例中,首先有一个 struct 和一个返回 struct 的函数的前向声明。 编译器假定 struct 使用 C++ 调用约定。 接下来是 struct 定义,该定义默认使用 C 调用约定。 由于编译器在完成读取整个 struct 之后才知道 struct 的调用约定,所以 的返回类型中 struct 的调用约定也被假定为 C++。

struct 后跟另一个返回 struct 的函数声明。 此时,编译器知道 struct 的调用约定是 C++ 。 同样,返回 struct 的函数指针在 struct 定义之后定义。 编译器现在了解 struct 使用 C++ 调用约定。

若要解决由不兼容调用约定引起的 C2440 错误,请声明在 UDT 定义后返回 UDT 的函数。

 
  

如果将零分配给内部指针,也会引发 C2440:

 
  

错误使用用户定义的转换也可能引发 C2440。 例如,当转换运算符被定义为 时,编译器无法在隐式转换中使用它。 有关用户定义转换的详细信息,请参阅用户定义转换 (C++/CLI)。 此示例生成 C2440:

 
  

如果尝试在 C++/CLI 中创建类型为 的数组实例,也会引发 C2440。 有关详细信息,请参阅 array。 下一个示例生成 C2440:

 
  

C2440 也可能因为属性功能的变化而发生。 以下示例生成 C2440。

 
  

下编译源代码时,Microsoft C++ 编译器不再允许 运算符向下强制转换。

若要解析此 C2440,请使用正确的强制转换运算符。 有关详细信息,请参阅强制转换运算符。

此示例生成 C2440:

 
  

由于 Visual Studio 2015 Update 3 中编译器的一致性更改,可能会引发 C2440。 以前,编译器在标识 操作的模板匹配时会错误地将某些不同的表达式视为相同类型。 现在编译器可以正确区分类型,并且依赖于先前 行为的代码被破坏。 若要解决此问题,请更改模板参数以匹配模板参数类型,或者使用 或 C 样式的强制转换。

此示例生成 C2440:

 
  

此错误可能显示在 ATL 代码中,该代码使用 中定义的 宏。

Visual Studio 2017 正确引发了与使用初始值设定项列表创建对象相关的编译器错误。 这些错误在 Visual Studio 2015 中没有被发现,它们可能会导致崩溃或未定义的运行时行为。 在 C++17 复制列表初始化中,编译器需要考虑用于重载解析的显式构造函数,但如果实际选择该重载,则必须引发错误。

以下示例在 Visual Studio 2015 中进行编译,但不在 Visual Studio 2017 中进行编译。

 
  

为更正此错误,应使用直接初始化:

 
  

在 Visual Studio 2015 中,编译器有时会在通过构造函数调用生成类对象时错误地忽略 cv 限定符。 此缺陷可能会导致崩溃或意外的运行时行为。 以下示例在 Visual Studio 2015 中编译,但在 Visual Studio 2017 及更高版本中会引发编译器错误:

 
  

若要更正此错误,请将运算符 int() 声明为 const。

到此这篇zipentry.getsize不可信解决(zip entry size is too large)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • ubuntu源代码阿里云的作用(ubuntu ports阿里源)2025-10-16 09:45:05
  • uchar num什么意思(uchar ms)2025-10-16 09:45:05
  • vs怎么读(revs怎么读)2025-10-16 09:45:05
  • rmp怎么读(rmsprop怎么读)2025-10-16 09:45:05
  • noentry怎么读(no they arent怎么读?)2025-10-16 09:45:05
  • 查看docker0(查看docker运行状态命令)2025-10-16 09:45:05
  • aurora是什么牌子手表是哪国的(aur0ra是什么牌子)2025-10-16 09:45:05
  • 服务器运行springboot项目(spring boot服务器)2025-10-16 09:45:05
  • rmp怎么读(rmxprt怎么读)2025-10-16 09:45:05
  • entreat翻译(entries 翻译)2025-10-16 09:45:05
  • 全屏图片