如何解决“W1047不安全代码'^ operator'”警告信息?

时间:2016-09-06 10:05:15

标签: delphi compiler-warnings

我启用了“不安全代码”警告,我想知道如何解决以下警告:

  

W1047不安全代码'^ operator'

此外,为什么这被视为“不安全代码”?

2 个答案:

答案 0 :(得分:8)

documentation说:

  

您使用的数据类型或操作静态代码分析无法证明它不会覆盖内存。此类代码可被视为安全风险。

     

例如,使用GetMem可以引发此警告,因为内存块没有关联的类型。

实际上只有两种方法可以避免这些警告:

  1. 禁用警告。
  2. 更改代码以停止使用不安全的内存访问。
  3. 在某些情况下,这两个选项都很有用。例如,考虑Embarcadero的支持动态数组的Delphi RTL代码。它需要能够分配内存,并使用这种不安全的操作访问该内存。这种基础库代码需要能够使用不安全的操作。考虑到您自己的代码,如果您需要执行不安全的代码,您可能将其隔离到单个单元或单元的单个部分,并禁用该代码的警告。

    开到第二项。您可能可以使用指针使用其他构造替换代码。例如,您可能拥有使用指针算法的代码,而不是使用数组编写。

    我认为这些警告是introduced to help developers migrate code to the long since abandoned Delphi .net compiler。所以你可能会认为,既然你没有瞄准.net,你可以简单地禁用这些警告。另一方面,我可以看到启用警告可能有用的场景,并警告可能更具风险的代码区域。选择是你的。

答案 1 :(得分:5)

这些警告仅适用于.NET兼容性(以及错误的IMNSHO)。禁用并忘记它们。

相关问题