知识大全 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

相关参考