• 预定义指令之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中被预定义了。

  • 相关阅读:
    10查询结果排序
    11汇总和分组数据
    09查询基础
    07修改数据
    08删除数据
    06插入数据
    PHP 判断数组是否为空的5大方法
    Mysql模糊查询like效率,以及更高效的写法
    经典面试题golang实现方式(一)
    php调用c语言编写的so动态库
  • 原文地址:https://www.cnblogs.com/Benjamin/p/3314235.html
Copyright © 2020-2023  润新知