zoukankan      html  css  js  c++  java
  • 预定义指令之debug

    1)根据你必须知道的.NET一书,

    #define DEBUG  
    
     class Program
        {
            static void Main(string[] args)
            {
    #if DEBUG 
             Console.WriteLine("debug mode");
    #else
                Console.WriteLine("release mode");
    #endif
            }
    
        }

    代码很简单,但其实这段代码是有问题的。

    原因出在,其实vs中内置了DEBUG,所以无需在开头再定义DEBUG。还是stackoverflow这里讲得比较正确。

    把第一行去掉后,编译选项选择debug/release的切换,就能切换编译的结果了。

     2)关于ConditionAttribute

            class Test
            {
                static void Main()
                {
                    Foo();
                    Console.Read();
                }
                [Conditional("DEBUG")]
                static void Foo()
                {
                    Console.WriteLine("debug mode");
                }
    
            }

    在DEBUG模式下,Foo能运行,否则编译时就会被跳过。

    对上面的一点扩展:

    #define mydefineSymbol
    using System;
    using ...
    class Test
            {
                static void Main()
                {
                    Foo();
                
                    Console.Read();
                }
                [Conditional("mydefineSymbol")]
                static void Foo()
                {
                    Console.WriteLine("debug mode");
                }
    
            }

    在第一行定义了mydefineSymbol之后,这样,Foo就会被编译器包括进来;否则则不被编译。

    3)很多时候,我们需要在测试环境下一套逻辑,生产环境中用另一套,那么可以使用在项目属性对话框中,自定义条件编译符号,这样,不用在每个文件最上手动添加一个#define。

    代码是:

                static void Main()
                {
    #if !Produce
    
                    Console.WriteLine("Produce");
    #endif 
                    Console.Read();
                }

    如果是Debug模式,则会编译该条件;如果是Release则会忽略。

    注意:

    1)DEBUG是大小写敏感的,写成Debug或debug是无用的。

     2)写Release是没有用的。原因是只有DEBUG这个词在VS中被预定义了。

  • 相关阅读:
    HDU 1162 Eddy's picture (最小生成树)(java版)
    codeforces 735D Taxes(数论)
    codeforces 735C Tennis Championship(贪心+递推)
    codeforces 2B The least round way(DP+数学)
    codeforces 2A Winner (好好学习英语)
    codeforces 632C The Smallest String Concatenation
    codeforces 803D Magazine Ad(二分+贪心)
    codeforces 803C Maximal GCD(GCD数学)
    codeforces 803B Distances to Zero
    STL容器之优先队列(转)
  • 原文地址:https://www.cnblogs.com/Benjamin/p/3314235.html
Copyright © 2011-2022 走看看