簡體   English   中英

預處理器指令不可能定義或取消定義預處理器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM