[英]Preprocessor directive Impossible define or cancel defining the preprocessor
我正在嘗試學習預處理器指令,因此我做了一個簡單的示例,如下所示:
using System;
namespace learning
{
class Program
{
static void Main(string[] args)
{
#define DEBUG
test();
}
private void test()
{
#if DEBUG
Console.WriteLine("Debug mode");
#elif RELEASE
Console.WriteLine("Release mode");
#else
Console.WriteLine("Debug and release don't defined");
#endif
}
}
}
但不幸的是我得到了這個錯誤:
無法定義或取消定義文件中第一個標記之后的預處理器符號
我從一本編程書中舉這個例子,怎么了?
更新(我的解決方案):
#define RELEASE
using System;
namespace learning
{
class Program
{
static void Main(string[] args)
{
#if DEBUG
Console.WriteLine("Debug mode");
#elif RELEASE
Console.WriteLine("Release mode");
#else
Console.WriteLine("Debug and release don't defined");
#endif
Console.ReadLine();
}
}
}
打印結果: Debug mode
,但應為Release mode
。 我做錯了什么?
如Neo所述,您可以在文件頂部定義它。
或者,如果您希望它具有全局性,並且您正在使用Visual Studio,則可以在項目屬性中對其進行定義(右鍵單擊該項目,選擇“屬性”,然后轉到“構建”選項卡)。
該屏幕將允許您根據構建配置定義符號(因此您可以為調試構建設置符號,並在切換配置時自動將其刪除)。
如果不使用Visual Studio,則可以將條件符號傳遞給MSBuild或csc(命令行生成或命令行c#編譯器)。 所有這些選項將使您能夠設置/取消設置符號而無需更改源代碼。
您需要在using
語句之前將#define
行放在文件的開頭
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.