none
請問C#中有沒有類似C++中 #ifdef 切割程式碼區段的功能 RRS feed

  • 問題

  • 例如我想針對各個不同平台撰寫程式,但希望用像 C++ 一樣的前置常數,在 compiler階段就把程式碼分割成多個區塊

     

    例如:

     

    #ifdef XXX

    //PC平台時

    ....

    #else

    // PDA平台時...

     

    #endif

     

    請問C#有類似這樣的功能嗎?

    2007年10月11日 上午 03:20

解答

  • 程式碼區塊
    // preprocessor_if.cs
    #define DEBUG
    #define VC_V7
    using System;
    public class MyClass
    {
        static void Main()
        {
    #if (DEBUG && !VC_V7)
            Console.WriteLine("DEBUG is defined");
    #elif (!DEBUG && VC_V7)
            Console.WriteLine("VC_V7 is defined");
    #elif (DEBUG && VC_V7)
            Console.WriteLine("DEBUG and VC_V7 are defined");
    #else
            Console.WriteLine("DEBUG and VC_V7 are not defined");
    #endif
        }
    }

     

     

     

    2007年10月11日 上午 03:27

所有回覆

  • 程式碼區塊
    // preprocessor_if.cs
    #define DEBUG
    #define VC_V7
    using System;
    public class MyClass
    {
        static void Main()
        {
    #if (DEBUG && !VC_V7)
            Console.WriteLine("DEBUG is defined");
    #elif (!DEBUG && VC_V7)
            Console.WriteLine("VC_V7 is defined");
    #elif (DEBUG && VC_V7)
            Console.WriteLine("DEBUG and VC_V7 are defined");
    #else
            Console.WriteLine("DEBUG and VC_V7 are not defined");
    #endif
        }
    }

     

     

     

    2007年10月11日 上午 03:27
  • 補充:

     

    因為PDA上的專案都會定義 "PocketPC" 這個前置詞,因此要區分PC端和PDA的程式區段可這樣寫:

     

    #if (PocketPC)

    // PDA專用的程式碼

    #else

    // PC專用的程式碼

    #endif

    2008年1月17日 上午 09:01