我已經啓用「不安全代碼」的警告,我想知道如何解決以下警告:如何解決「W1047 Unsafe code'^ operator'」警告消息?
W1047不安全的代碼'^運營商
而且,這是爲什麼認爲「不安全的代碼」?
我已經啓用「不安全代碼」的警告,我想知道如何解決以下警告:如何解決「W1047 Unsafe code'^ operator'」警告消息?
W1047不安全的代碼'^運營商
而且,這是爲什麼認爲「不安全的代碼」?
你已經使用的數據類型或操作,其靜態代碼分析不能證明它不會覆蓋內存。這樣的代碼可能被認爲是安全風險。
例如,使用GetMem可以引發此警告,因爲內存塊沒有關聯類型。
有真的只有兩個辦法,以避免這些警告:
這兩個選項在某些情況下可能有用。例如,考慮Embarcadero的支持動態數組的Delphi RTL代碼。它需要能夠分配內存,並使用這種不安全的操作訪問內存。這種基本的庫代碼需要能夠使用不安全的操作。考慮到你自己的代碼,如果你需要執行不安全的代碼,你可能會將它隔離成一個單元或一個單元的一部分,並禁用該代碼的警告。
打開第二項。您可能有可能使用指針替換使用其他構造的代碼。例如,你可能有代碼使用指針算術,而不是使用數組寫入。我相信這些警告是introduced to help developers migrate code to the long since abandoned Delphi .net compiler。所以你可能會認爲,既然你沒有瞄準.net,你可以簡單地禁用這些警告。另一方面,我可以看到哪些場景可以有效地啓用警告,並警示可能更具風險的代碼區域。這是你的選擇。
這些警告僅適用於.NET兼容性(和誤稱詞IMNSHO)。禁用並忘記它們。
是的,這個警告是作爲.NET編譯器的準備而引入的。其他編譯器可以安全地忽略它。 –
或者如果您希望對此類代碼發出警告,則可以安全啓用。無論哪種方式。 –