知识大全 C#必备知识之预编译指令

Posted 指令

篇首语:不患人之不己知,患不知人也。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#必备知识之预编译指令相关的知识,希望对你有一定的参考价值。

C#必备知识之预编译指令  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  预编译又称为预处理 是做些代码文本的替换工作 处理#开头的指令 比如拷贝#include包含的文件代码 #define宏定义的替换 条件编译等 就是为编译做的预备工作的阶段 主要处理#开始的预编译指令

  下面对C#中的预编译指令进行介绍

   #define和#undef

  用法

  #define DEBUG

  #undef DEBUG

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

  #define DEBUG

  #undef  DEBUG

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

   #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会怎么样呢?各位可以自己试一下

   #warning #error

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

  参考下面的代码

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

   #region 和#endregion

  这个两个用来组成代码块

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

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

  下面的示例说明如何报告与行号关联的两个警告 #line 指令迫使行号为 (尽管默认值为 # ) 另一行 (# ) 作为默认 #line 指令 的结果跟在通常序列后

  示例

// preprocessor_line cspublic class MyClass    public static void Main()          #line       int i;   // CS on line       #line default      char c;   // CS on line   

  示例

  下面的示例说明调试器如何忽略代码中的隐藏行 运行此示例时 它将显示三行文本 但是 当设置如示例所示的断点并按 F 键逐句通过代码时 您将看到调试器忽略了隐藏行 另请注意 即使在隐藏行上设置断点 调试器仍会忽略它

cha138/Article/program/net/201311/15246

相关参考

知识大全 简单JSP的基本语法

简单JSP的基本语法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JSP编译器指引与指令元件有

知识大全 .NET 委托

.NET委托  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  委托类型定义  C#编译器处理委托时

知识大全 powerbuilder程序防止破解的办法[1]

  鉴于任何程序都运行cpu指令并可被反编译成汇编码也就是说理论上程序都是在裸奔所以天下无不可破之程序所以这里讨论的防止只是一定程度上的比如提高破解难度拖延时间让破解者挫折感增加等等  一pb的现状 

知识大全 实现自动化对象的一种简易方法

  Delphi中不需要建立ActiveXLibrary不需要编辑TLB也能创建一个自动化对象  秘密就在于$METHODINFO这个没有文档描述的编译指令  首先我们定义一个TScriptableO

知识大全 新增匿名类[1]

  一用var定义变量  在C#中提供了一种新的声明变量的方式这就是var通过这个关键字在声明变量时就无需指定类型了变量类型是在初始化时由编译器确定的代码如下:varss=abcd;MessageBo

知识大全 jsp预编译问题

  这个方法是到目前为止进行JSP预编译最方便的途径(flickaswitch途径)他有许多指出来毫无意义的缺点如果一个错误在JSP的编译期间或在部署(或重新部署)的时候发生Web应用程序的预编译将会

知识大全 JSP指令元素(page指令/include指令/taglib指令)复习整理

JSP指令元素(page指令/include指令/taglib指令)复习整理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让

知识大全 预编译 aspnet

 时web项目可以编译成一个dll然后发布该dll和aspxascx页面即可到了里web项目的编译则稍有不同  首先vs里有两种类型的web程序website和webpr

知识大全 eclipse忽略svn目录文件编译

  使用eclipse进行开发时在编译JAVA代码时的原则是对于源代码目录中的所有*java文件编译成同名的*class文件而对于如abcjava中的内部类C编译成abc$Cclass对于所有非jav

知识大全 Java 相关的编译技术

Java相关的编译技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  除了Java的编译器和虚拟