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中被预定义了。

  • 相关阅读:
    WPF多路绑定
    ConfigurationManager
    开发小技巧1——Logger
    C#对json数据的解析
    Process类
    JS获取访客IP+判断归属地+自动跳转
    织梦默认编辑器换成kindEditor实操教程
    linux中添加环境变量(python为例)
    原生javascript实现省市区三级联动
    kali安装火狐浏览器
  • 原文地址:https://www.cnblogs.com/Benjamin/p/3314235.html
Copyright © 2011-2022 走看看