欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 【C#】预处理指令

【C#】预处理指令

2025/9/20 1:58:47 来源:https://blog.csdn.net/qq_44653106/article/details/144616773  浏览:    关键词:【C#】预处理指令

预处理指令

它提供了一种控制某一块代码编译与否的方法。

#define DEBUG
class MyClass
{int x;void Foo(){#if DEBUGConsole.WriteLine("Testing:x={0}",x);#endif}
}

常用指令

预处理指令含义
#define symbol定义symbol,必须放到文件的第一行
#undef symbol取消symbol 定义
#if symbol [operator symbol]判断symbol符号。其中operator 可以是==、!=、&&、||。#if指令后可以跟#else、#elif和#endif
#else加在#if后面
#elif symbol [operator symbol2]zudhe #else 和 #if判断
#endif结束条件指令
#warning text在编译器输出中显示text警告信息
#error text在编译器输出中显示text错误信息
#pragma warning [disable | restore]禁用/恢复编译器警告
#line [number[“file”]]|hiddennumber是源代码的行号;file是输出的文件名;hidden指示调试器忽略此处到下一个#line指令之间的代码
#region name标记大纲的开始位置
#endregion结束一个大纲区域

案例:

#if 、#else 、#elif相关

#define symbol 必须放到第一行

#define TOM
#define NET60namespace TopSet17
{internal class Program{static void Main(string[] args){#if TOMConsole.WriteLine("Debug mode is on.");
#elif TOM01Console.WriteLine("tom01");
#endif#region 正文Console.WriteLine("Hello, World!");#endregion#if NET40// Code specific to .NET 4.0Console.WriteLine("This code will only compile for .NET 4.0.");#elif NET45// Code specific to .NET 4.5Console.WriteLine("This code will only compile for .NET 4.5.");
#elif NET60// Code specific to .NET 6.0Console.WriteLine("This code will only compile for .NET 6.0.");
#else// Code specific to .NET 4.5Console.WriteLine("This code will only compile for .NET other");
#endif}}
}//输出
Debug mode is on.
Hello, World!
This code will only compile for .NET 6.0.

#line相关,表示一个文件里面,可以拆分为不同的文件,并且下面代码是在第几行

static void Main(string[] args)
{Method1();
}
#line 1 "Program1.cs"public static void Method1()
{Console.WriteLine("Method1 is called.");
}#line 1 "Program2.cs"public static void Method2()
{Console.WriteLine("Method2 is called.");
}

#error 、 #warn

#define TOM1
static void Main(string[] args)
{#if TOM//如果定义了TOM,那么下面就会在编译器报错#error "my error"#endif#if TOM1#warning "my warning"#endif
}

综合

#define Debug//调试
#define Release//发布
#undef Debug//取消定义调试#line 100
#pragma warning disable CS0219//消除CS0219警告
#region "代码折叠器"
#if Debug&&Release==false//调试版本执行
#elif !Debug&&Release//发布版本执行
#elif !Debug&&!Release//两个版本都不存在#error "两个版本都不存在";
#elif//发布和调试版本都执行
#endif
#warning "最后不要忘了把这段语句去掉";
#endregion

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词