zoukankan      html  css  js  c++  java
  • C#预编译

    在C#开发中经常会遇到在Debug和Release模式下需要执行不同代码的情况,这个时候使用C#条件编译可以很好地解决这个问题,如

    #if DEBUG

      // TO Do Debug Mode Code

    #else

         // TO Do Release Mode Code.

    #endif 

    使用这种方法,可以在Debug模式下,执行debug模式的代码,而在非Debug模式下执行下面的代码。其中DEBUG宏变量的定义,操作如下:打开程序的属性,在Build中,有一个CheckBox:“Define DEBUG constant”,把这个钩钩去掉之后就没有DEBUG了,如果打上勾就有了。

    当然也可以自己定义宏变量(预编译指令),如

    #define DEBUG

    #undefine DEBUG

    1. 预编译指令必须在代码文件的开头就定义,否则就有语法错误;

    2. 条件编译指令有以下4种

        #if

        #elif

          #else

        #endif

    这些条件编译指令用来有条件的将部分程序段包括进来或排除在外。他们和c#中的if语句有类似的作用。

    条件编译符号有两种可能的状态:已定义的或未定义的。在源文件词法处理开始时,条件编译符号除非已由外部机制(如命令行编译器选项)显式定义,否则是未定义的。

    他们在程序中的出现的先后顺序必须是这样:

    一条#if语句(必须有)

    零或多条#elif语句

    零或一条#else语句

    一条#endif语句(必须有)

    3.Conditional条件编译

    当调用标记为条件的方法时,指定的预处理符号的存在或不存在决定是否包含或省略此调用。如果定义了该符号,则包含调用;否则省略调用。使用 Conditional 是封闭 #if  #endif 内部方法的替代方法

    classDebug

        {

            staticvoidMain(string[] args)

            {

                Print1();

                Print2();

                Print3();

                Console.ReadLine();

            }

           //定义了debug才执行

            [Conditional("DEBUG")]

            staticvoid Print1()

            {

                Console.WriteLine("Print1");            

            }

     

            //定义了debug或者trace后才执行

            //或者的关系

            [Conditional("DEBUG"), Conditional("Trace")]

            staticvoid Print2()

            {

                Console.WriteLine("222222222222222222222222");

            }

     

            //只有定义了Debug和Trace后才会执行此方法

            [Conditional("DEBUGAndTrace")]

            staticvoid Print3()

            {

                Console.WriteLine("33333333333333333333333333333333");

         }

    }

    预编译语法参考: 

    #define 使您得以定义符号,这样,通过将该符号用作传递到 #if 指令的表达式,该表达式将计算为 true。

    #define symbol 其中:symbol要定义的符号名称。备注 符号可用于指定编译的条件。可以用 #if 或 #elif 来测试符号。还可以使用 conditional 属性执行条件编译。             

    可以定义符号,但是无法对符号赋值。#define 指令必须在使用任何也不是指令的指令之前出现在文件中。             

    也可以用 /define 编译器选项定义符号。可以用 #undef 取消定义符号。          

     用 /define 或 #define 定义的符号与具有同一名称的变量不冲突。即,不应将变量名传递到预处理器指令,并且只能用预处理器指令计算符号。             

    用 #define 创建的符号的范围是在其中定义该符号的文件。     

  • 相关阅读:
    输出菱形
    合工大OJ 1359
    9.游标的使用
    8.存储过程和触发器
    css sprite---css精灵网页图片应用处理方式分析
    为什么HTML使用<!DOCTYPE HTML>
    Dom捕捉事件和冒泡事件-原理与demo测试
    html5 canvas 绘制五星红旗
    javascript实现 color颜色格式转换【 rgb和十六进制的转换】
    d3.js 根据需求定制pie图饼图
  • 原文地址:https://www.cnblogs.com/lenmom/p/3728153.html
Copyright © 2011-2022 走看看