C#-预处理指令

C#预处理指令

       预处理指令的开头都有#.使用预处理指令可以禁止编译器编译代码的某一部分.如果计划发布两个版本的代码,就可以使用预处理指令.

 

#define #undef

       #define DEBUG    它告诉编译器存在给定名称的符号. DEBUG有些类似于声明一个变量,但它并没有真正的值,只是存在而已.

#undef DEBUG     正好相反,它删除符号的定义.

必须将#define#undef放在C#源代码的开头,在声明要编译的任何对象的代码之前. #define本身并没什么用,当它与其它预处理指令(特别是#if)结合使用时,它的功能就非常强大了.

 

#if,#elif,#else#endif

       这些指令告诉编译器是否要编译某个代码块.下面的例子说明了,只有前面的#define定义了DEBUG才能执行里面的内容.否则,编译器忽略里面的所有内容,(忽略)到见到#endif为止.

       一般调试时可以使用这招(C++很普遍),完成调试后,就将#define注释掉就OK.      

        public void Show()

        {

            #if DEBUG

                Console.WriteLine("DEBUG have defined...");

            #endif

}

       #if #endif 支持逻辑运算符.如果存在(#define),就认为是true,否则是false.

#if (DEBUG==false)

 

#warning #error

       编译器遇到#warning,会给用户显示#warning后面的文本,之后继续编译;

       编译器遇到#error,会给用户显示#error后面的文本,之后立即退出编译.

#if DEBUG

            #error "You have defined DEBUG";

        #endif

 

        #if DEBUG

            #warning "You have defined DEBUG";

        #endif

 

#region #endregion

       不做过多解释了.

 

#line

用于改变编译器在警告我错误信息中的文件名和行号.如果编译前你导入了某些软件包,当编译出错后,出错代码的行号就和实际中不符.使用#line即可解决此问题.

 

#pragma

用于抑制恢复指定的编译警告.下例中,#pragma…disable#pragma…restore之间的部分禁止字段使用警告.

#pragma warning disable 169

public class MyClass

{  

    int num;

}

#pragma warning restore 169

 

你可能感兴趣的:(C++,C#,Class,编译器)