C#中有趣的预处理指令

  1. #define 和 #undef

    //存在给定名称的符号
    //类似于变量声明,没有真正的值,只是存在而已
    #define DEBUG
    
    //删除符号
    #undef DEBUG

    声明的符号不是实际代码的一部分,而只在编译器编译代码时存在。在C#代码中它没有任何意义。
    如果符号不存在,#undef就没有任何作用。同样,如果符号存在,则#define也不起作用。
    必须把#define 和 #undef 命令放在C#源文件的开头位置,在声明要编译的任何对象的代码之前。
    #define本身并没有什么作用,但与其他预处理指令(特别是#if)结合使用,它的功能就非常强大了。

  2. #if、#elif、#else和#endif

    #if DEBUG
          Console.WriteLine("Debug!");
    #endif DEBUG

    这段代码会像往常一样编译,由于Console.WriteLine命令包含在#if子句内。这行代码只有在前面#define命令定义了符号DEBUG后才执行。
    一般是在调试时定义DEBUG符号,把与调试相关的代码放在#if子句中。这称为条件编译。
    #elif(=else if)和#else指令可以嵌套在#if块中,含义非常直观。

    #define DEBUG
    #define RELEASE
    void DoSomething()
    {
    	#if DEBUG
    		//DEUBG符号执行的代码
    		#if RELEASE
    		//内嵌语句
    	#endif //结束#if RELEASE
    	#elif ERROR
    		//else if ERROR符号执行的代码
    	#else
    	//无匹配符号执行
    	#endif//结束
    }

    #if和#elif还支持一组逻辑运算符“!”、“==”、“!=”和“||”。如果符号存在,就为true,否则为false。

    #if DEBUG && (RELEASE==false)
    
    
  3. #warning和#error

    #warning "警告消息"
    
    #error "错误消息"

    两个非常有用的预处理指令,当编译器遇到它们时,会分别产生警告或错误。功能有点像Java中的log4J插件。
    在VS中警告和错误消息是显示在错误列表视图中的。

  4. #region和#endregin

    #region name
    	//代码段
    #endregion

    折叠代码块是日常编程中使用较频繁的。
    没有什么特殊的含义,就是一组可以被编译器识别的指令,使代码在屏幕上更好的布局。

  5. #line

    //number行号 filename文件名 
    #line number "filename" 
    
    //还原默认行号
    #line default
    
    //允许编译器跳过该指令与下一个不包含hidden选项的#line指令之间的行
    #line hidden

    #line指令可以为它所在的文件设置行号和文件名。编译过程中如果出现错误或警告就会用到这里的行号和文件名。
    #line主要用于调试和特殊的应用程序。

  6. #pragma

    #pragma warning disable //禁用警告
    void Cale()
    {
       int num;//未初始化的变量
    }
    #pragma warning restore  //还原警告

    #pragma可以抑制或还原指定的编译警告。
    以上例子中num变量在IDE中本来是会出现绿色波浪线的警告,但由于#pragma的声明就不会产生警告信息。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值