原文:C#中的预编译指令介绍

1、#define和#undef

用法:

#define DEBUG

#undef DEBUG

#define告诉编译器,我定义了一个DEBUG的一个符号,他类似一个变量,但是它没有具体的值,可以将它看为一个符号而已。#undef就是删除这个符号的定义。如果符号DEBUG没定义过,则#undef不起作用,否则#define不起作用。二者都必须放在源代码之前。二者的顺序看代码的顺序:

#define DEBUG

#undef  DEBUG

这样的话,DEBUG是没有定义的,如果二者换个顺序,编译器就认为DEBUG被定义了

2、#if、#elif、#else、#endif

这个告诉编译器进行编译代码的流程控制。考虑下面代码:

#if DEBUG
   Console.Write("debug");
#elif RELEASE
    Console.Write("realse");
#else
    Console.Write("other");
#endif

以上代码就是说如果定义了DEBUG则输出debug,定义了RELEASE,则输出realse,否则输出other。如果定义了DEBUG和REALSE会怎么样呢?各位可以自己试一下。

3、#warning、#error

通过这两个指定可以告诉编译器,出一个警告还是错误信息。除了错误信息以后,编译将停止

参考下面的代码

#if DEBUG                                 ------〉该DEBUG如果选中当前状态为DEBUG,则这个默认为#define
   #warning “现在是Ddbug状态”
#elif RELEASE                            ------〉如果选中release状态的话,这个确没有默认,不知道我试验的对不对
    #warning “现在是Realse状态”
#else
    #error“并清楚什么状态”

#endif

4、#region 和#endregion

这个两个用来组成代码块

5、#line (这个指定的使用不太明白,参考MSDN)

这个指令可以改jian变编译器在警告和错误信息中显示的文件名和行号信息,用#line default把行号恢复为默认的行号。

下面的示例说明如何报告与行号关联的两个警告。#line 200 指令迫使行号为 200(尽管默认值为 #7)。另一行 (#9) 作为默认 #line 指令 的结果跟在通常序列后。
// preprocessor_line.cs
public class MyClass2
{
   public static void Main()
   {
      #line 200
      int i;   // CS0168 on line 200
      #line default
      char c;   // CS0168 on line 9
   }
}

示例 2
下面的示例说明调试器如何忽略代码中的隐藏行。运行此示例时,它将显示三行文本。但是,当设置如示例所示的断点并按 F10 键逐句通过代码时,您将看到调试器忽略了隐藏行。另请注意,即使在隐藏行上设置断点,调试器仍会忽略它。
// preprocessor_linehidden.cs
using System;
class MyClass
{
   public static void Main()
   {
      Console.WriteLine("Normal line #1.");   // Set a break point here.
      #line hidden
      Console.WriteLine("Hidden line.");
      #line default
      Console.WriteLine("Normal line #2.");
   }
}

C#中的预编译指令介绍相关推荐

  1. C/C++常用预编译指令介绍

    目录 1.#include指令 2.#define和#undef指令 3.#ifdef.#ifndef.#else.#elif和#endif指令 4.#error指令 5.编译器预置宏__FILE__ ...

  2. 在Silverlight 和WPF中使用预编译指令 if..else..endif (译)

    下面的是中文翻译,有些扯淡的话就略过了,想看原文,请到这里 对于预编译指令,作者分成了几篇文章来讲解的.鉴于翻译后的文字较少,我把作者的几篇合为了一篇.下面进入正题. 一.总揽: 想要编写特定平台的代 ...

  3. C#基础13:预编译指令

    PS:注释和讲解全在代码中 1. 预编译指令 预编译指令也叫预处理指令,在程序正式编译之前执行 这些指令不会转化为可执行代码中的命令,但是会影响编译过程的各个方面 具体例子如代码: using Sys ...

  4. c语言中条件编译相关的预编译指令

     一. 内容概述 本文主要介绍c语言中条件编译相关的预编译指令,包括#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. 二. ...

  5. C语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】

    由"源代码"到"可执行文件"的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译 ...

  6. c语言if多条件并列_C/C++编程笔记:C语言预编译指令—条件编译,零基础推荐收藏

    一. 内容概述 本文主要介绍c语言中条件编译相关的预编译指令,包括#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. 二.条件编 ...

  7. 几个预编译指令的用法

    *.几个预编译指令的用法 #        字符串化运算符,其主要效果是把参数的名字转换为字符串. Example: //1. *.h中定义 #defineSTRINGLIZE(ivalue)  #i ...

  8. 预编译指令与相关宏小结

    //======================================================================== //TITLE: //    预编译指令与相关宏小 ...

  9. C中的预编译宏定义-转

    C中的预编译宏定义 2009-02-10 作者: infobillows 来源:网络 在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocesso ...

最新文章

  1. 汇总运行在Hadoop YARN上的开源系统
  2. JPA 2 | EntityManagers,事务及其周围的一切
  3. 华为云服务怎么弄金卡会员_万科牵手华为终端云服务,共建松山湖智慧商圈
  4. HTML+CSS+JS实现 ❤️透明等离子球ui特效❤️
  5. 670. Maximum Swap 允许交换一个数 求最大值
  6. 数据量太大?用数据库水平切分搞定!
  7. wpf中内容包含在border中_Excel中创建包含注释的数学公式
  8. fseek函数、ftell函数、rewind函数详解
  9. 机器学习导论(一)绪论
  10. Android简单实现高德地图显示及定位
  11. [分析力学]解题思路 - 最小作用量原理
  12. 你会在本地搭建 Web 版 VS Code 吗,看完这一篇你就能轻松实现了!
  13. linux下通过inode删除文件
  14. (一)传说中“哈佛最受欢迎的课程”
  15. 理论篇:如何理解51%攻击
  16. 从一道面试题认识函数柯里化
  17. WebAPI编程_DOM
  18. 阻碍NFT进一步发展的绊脚石都有哪些?从6个方面切入分析
  19. 12864与24C04的原理和使用方法——以电子密码锁为例(下篇)
  20. SCOUT 薄膜分析软件

热门文章

  1. java基本数据类型_Java面试题Java中有几种基本数据类型?它们分别占多大字节?...
  2. java .classpath配置_轻松玩转Java配置的Classpath
  3. 怎么在CSDN中写微信公众号推文?
  4. 如何打赢一场唯快不破的比赛,看看他们的绝招
  5. 械模拟计算器 - 计算尺
  6. 人工智能创意赛复选赛成绩单
  7. 低压差降压稳压电路设计
  8. python模板是什么意思_什么是最快的Python模板系统?
  9. hellowolrd 的系统调用
  10. java外观设计修改_Java设计模式之外观模式和装饰器模式的设计(精选)