C#预处理命令

宏定义必须放在文件的最前面.如#define Debug.
// preprocessor_if.cs
#define DEBUG
#define VC_V7
using System;
public class MyClass
{
    static void Main()
    {
#if (DEBUG && !VC_V7)   //可以用&&、||、==、!= 联合多个宏
        Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V7)
        Console.WriteLine("VC_V7 is defined");
#elif (DEBUG && VC_V7)
        Console.WriteLine("DEBUG and VC_V7 are defined");
#else
        Console.WriteLine("DEBUG and VC_V7 are not defined");
#endif
    }
}
#if 与#endif配对.
#elif(condition)相当于else if
#else 相当于 else
#undef 去除宏定义。即,#define Debug,而后面调用#undef 则Debug转为未定义。还有一点要注意,它与#define一样都必须放在文件的第一行或开头。
#warning debug is defined 用于条件语句中,debug is defined 可以按实际条件改变。如果debug定义了,则在

编译时会错误列表中出现这个警告。
#error与#warning相似,可以生成特定错误。
#line 200行号
#line default
#line hidden 处于此下的语句,断点将不起作用。
#pragma 为编译器提供特殊的指令,以说明如何编译包含杂注的文件。
#pragma pragma-name pragma-arguments
#pragma warning 可启用或禁用某些警告
#pragma warning disable warning-list
#pragma warning restore warning-list
如:#pragma warning disable禁用所有警告。
#pragma warning restore 启动警告
#pragma checksum "filename" "{guid}" "checksum bytes"
参数
"filename"

要求监视更改或更新的文件的名称。

"{guid}"

文件的全局唯一标识符 (GUID)。

"checksum_bytes"

十六进制数的字符串,表示校验和的字节。必须是偶数位的十六进制数。奇数位的十六进制数字会导致编译时警告,然后指令被忽略。

posted on 2008-05-20 22:51  hackenliu  阅读(3043)  评论(1)    收藏  举报

导航