C# unsafe code may only appear if compiling with/unsafe


在C#中,在程序中使用指針(如下面程序所示),編譯時會出現“Unsafe code may only appear if compiling with /unsafe”的錯誤提示。本文談一下出錯原因和解決辦法。

public static void Main(string[] args)  
{  
    int i = 99, y = 200;  
    unsafe  
    {  
        swap(&i, &y);  
    }  
    Console.WriteLine("x is now {0},y is now {1}",i,y);  
}  
  
public static unsafe void swap(int *a, int *b)  
{  
    int temp;  
    temp = *a;  
    *a = *b;  
    *b = temp;  
}

 

1. 原因:

在寫任意一個C#程序的時候,一般都是在創建托管代碼。托管代碼是在Common Language Runtime (CLR)控制下執行,CLR使得程序員不需要管理內存和關心內存的分配和回收,有自動回收內存的機制。CLR也允許你寫非安全代碼 (unsafe code)。

非安全代碼就是不在 CLR 完全控制下執行的代碼,它有可能會導致一些問題,因此他們必須用 “unsafe” 進行表明,所以一般如果在C#中到用unsafe code非安全代碼的話,VS.NET中編譯就會出現“Unsafe code may only appear if compiling with /unsafe”的提示了,

 

2. 解決方法:

點項目屬性(Properties)->生成(Build)->常規(General)中:鈎上允許不安全代碼(Allow unsafe code)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM