C#条件编译

条件编译是C#比Java多出的东西,条件编译在实际的项目开发中不怎么使用.但在最近的一个学习的项目中发现这类的问题,

条件编译是C#比Java多出的东西,但我跟前辈请教后,他们都说条件编译在实际的项目开发中不怎么使用.鉴于是新内容,我还是做做笔记,理解一下好了.

  条件编译属于编译预处理的范畴,它能让我们通过条件编译的机制,将部分代码包括进来或者排除出去,其作用与if-else类似.

 条件编译指令有以下四种

    #if
    #elif
      #else
    #endif

  下面我们通一些例子来说明它们的用法

#define Debug
  class Class1
 {
      #if Debug
      void Trace(string s) {}
      #endif
 }

执行时由于第一行已经使用#define 指令定义了符号Debug, #if 的条件满足,所以这段代码等同于

代码如下:

class Class1
{
   void Trace(string s) {}
}

再比如:  

代码如下:

#define A
   #define B
   #undef C
   class D
  {
      #if C
         void F() {}
             #elif A && B
                void I() {}
      #else
         void G() {}
      #endif
  }

其编译效果等同于:

复制代码代码如下:

class C
{
   void I() {}
}

#if 指令可以嵌套使用, 例如:

代码如下:

#define Debug // Debugging on 
   #undef Trace // Tracing off
   class PurchaseTransaction
  {
      void Commit() 
    {
      #if Debug
          CheckConsistency();
          #if Trace
            WriteToLog(this.ToString());
          #endif
      #endif
      CommitHelper();
     }
  }

预编译和条件编译指令还可以帮助我们在程序执行过程中发出编译的错误或警告,相应的指令是#warning 和#error,下面的程序展示了它们的用法:代码如下:

#define DEBUG 
   #define RELEASE
   #define DEMO VERSION
     #if DEMO VERSION && !DEBUG
        #warning you are building a demo version
     #endif
     #if DEBUG && DEMO VERSION
       #error you cannot build a debug demo version
     #endif
   using System;
   class Demo
  {
     public static void Main()
    {
      Console.WriteLine(“Demo application”);
    }
  }

时间: 2024-11-07 05:15:40

C#条件编译的相关文章

#ifdef、#ifndef、#else、#endif执行条件编译

我们开发的程序不只在pc端运行,也要在移动端运行.这时程序就要根据机器的环境来执行选择性的编译,如对PC端编译PC端的程序,对移动端编译移动端的程序,这里我们就可以用两组条件编译. #ifdef  #endif #ifndef #endif 我们先来了解下#ifdef ...#endif:语法格式是: #ifdef 宏名字           |#ifdef 宏名字 //任意代码             |//任意代码 #endif                       |#else |/

条件编译及编译预处理阶段分析与总结--笔记

C语言条件编译及编译预处理阶段分析与应用总结 (笔记) 一.C语言由源代码生成的各阶段如下: C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件 其中 编译预处理阶段,读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理.或者说是扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器.预处理过程先于编译器对源代码进行处理. 在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件.定义宏.根据条件决定编译

预处理——条件编译

条件编译的概念 在很多情况下,我们希望程序的其中一部分代码只有在满足一定条件时才进行编译,否则不参与编译(只有参与编译的代码最终才能被执行),这就是条件编译. 一.基本用法 1 #if 条件1 2 ...code1... 3 #elif 条件2 4 ...code2... 5 #else 6 ...code3... 7 #endif 1> 如果条件1成立,那么编译器就会把#if 与 #elif之间的code1代码编译进去(注意:是编译进去,不是执行,很平时用的if-else是不一样的)2> 如

条件编译#ifdef的妙用详解_透彻

这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部 分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句.     条件编译命令最常见的形式为:     #ifdef 标识符     程序段1     #else     程序段2     #endif          它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序

<29>【掌握】#if-#else 条件编译指令+

[掌握]#if-#else 条件编译指令 #include <stdio.h> #define score 99 int main(int argc, const char * argv[]) { //传统方式 // int score = 76; // //判断成绩属于哪个等级 // if(score<60){ // printf("E\n"); // }else if (score<=69){ // printf("D\n"); // }

《黑马程序员》预处理指令(宏定义、条件编译、文件包含)(C语言)

宏定义的基本概念 ●  预处理指令都是以#开头 ●  预处理指令分为三种 1.宏定义 定义格式:#define  宏名   参数 2.条件编译 #if 条件语句     statement1; #elif 条件语句     statement2; #else     statement3; #endif       //条件编译结束必须加上此条语句,否则statement3以下的所有语句都将默认为不编译 3.文件包含 ●  预处理指令在代码翻译成0和1之前进行 ●  预处理指令的位置是可以写的

c#编程中创建全局#define - 条件编译符号

项目-属性-生成-条件编译符号 而不必每次都在类前面#define了. c#编程中创建全局#define - 条件编译符号,布布扣,bubuko.com

C#-#define条件编译

C#的预处理器指令从来不会转化为可执行代码的命令,但是会影响编译过程的各个方面,常用的预处理器指令有#define.#undef.#if,#elif,#else和#endif等等,下面介绍C#中使用#define进行条件编译的实例. C#中条件编译指令用于按条件包含或排除源文件中的某些部分.在Visual Studio中,会看到被排除的代码显示为灰色. 一.#define可以用来做什么 1.当计划发布两个版本的代码的时候.即基本版和拥有更多版本的企业版,就可以用到条件编译指令: 2.例如同一个文

iOS swift 条件编译语句

在 C 系语言中,可以使用 #if 或者 #ifdef 之类的编译条件分支来控制哪些代码需要编译,而哪些代码不需要.Swift 中没有宏定义的概念,因此我们不能使用 #ifdef 的方法来检查某个符号是否经过宏定义.但是为了控制编译流程和内容,Swift 还是为我们提供了几种简单的机制来根据需求定制编译内容的. 首先是 #if 这一套编译标记还是存在的,使用的语法也和原来没有区别: #if <condition> #elseif <condition> #else #endif 但

C# 条件编译备忘

第一步:配置管理器中新建解决方案配置 第二步:定义条件编译符号: 第三步:在代码中使用自定义的条件编译 #if CustomDebugConsole.WriteLine("dsads");#endif