深入浅析c#中的预处理指令?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>预处理指令强>
这些指令/命令不会转换为可执行代码,但会影响编译过程的各个方面,列如,可以让编译器不编译某一部分代码等。
c#中主要的预处理指令
#定义和# undef
<强> #定义指令定义:强>
#定义调试
它告诉编译器存在调试这个符号;这个符号不是实际代码的一部分,而只是在编译器编译代码时候可能会根据这个符号做条件编译。
<强> # undef定义:强>
# undef调试
用来移除定义的符号调试。如果不存在这样的标记,# undef指令则不会生效。同样,用# define再次定义一个同名的标记也不会有任何变化。
注意:
- <李>你需要将#定义和# undef指令写在实际业务代码开始之前的位置。李> <李> # define本身没有什么用,需要和其他预处理器指令结合使用,比如#如果
李,>
<强> #如果,# elif,其他#和# endif 强>
这些指令告诉编译器是否要编译包含在其中的代码块。例如:
int DoSomeWork(双x) {//做某事 #如果调试 Console.WriteLine ($“x={x}“); # endif }
这段代码中的控制台。Writeline语句,只有在前面用#定义指令定义了符号调试后才会在编译的时候,真正被编译到;
如果编译器没发现调试符号,就会在编译的时候忽略这句代码。
# elif (=else if)和#其他指令可以用在#如果块中:
#定义企业 #定义W10//如果W10进一步> #,,(企业==false)//如果W10定义,但企业不愿# 39;t
<强> #警告和#误差强>
当编译器遇到#警告的时候,会产生警告信息;
当编译器遇到#错误的时候,会产生错误信息;
类项目 { 静态void Main (string [] args) { #将显示警告这是一个警告消息,当编译 Console.WriteLine (“Hello World !”); 错误#这是一个错误消息,并将打破 } }
编译结果:
Program.cs(10,10):警告CS1030: #警告:& # 39;这是一个警告消息时将显示编译# 39;[/define_warning/define_warning.csproj]
引用>
Program.cs(14日8):错误CS1029: #错误:& # 39;这是一个错误消息,并将打破构建# 39;[/define_warning/define_warning。csproj]
1警告(s)
1错误(s)使用这些指令可以检查# define语句是不是做错了什么事,使用#警告可以提醒要做些事情:
#如果调试,,释放 错误#“你# 39;同时已经定义的调试和发布!“ # endif #警告“不要# 39;t忘记删除这条线之前老板测试代码!“ Console.WriteLine(“* *,我爱这份工作。);<强> #区域和# endregion 强>
可以用来标识一段代码,在Visual Studio或其他能够识别的IDE里比较有用。
# 164行“Core.cs"//我们知道这是在文件Core.cs 164行,//在中间包,导致它。//后>类项目 { 静态void Main (string [] args) { int i=0; Console.WriteLine (“Hello World !”); } }编译是会有警告:
Program.cs(17):警告CS0219:变量& # 39;我# 39;被分配,但它的值是从未使用过[/define_warning/define_warning。csproj]
引用>
1警告(s)
0错误(s)从预警信息可以看出CS0219是警告,加入# pragma后就不会有警告了。
# pragma禁用CS0219警告 公共类项目 { 静态void Main (string [] args) { int i=0; Console.WriteLine (“Hello World !”); } } # pragma警告恢复CS0219注意:警告的代码是区分大小写的,CS2019要大写,如果写成CS2019则没有用。
看完上述内容,你们掌握深入浅析c#中的预处理指令的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
深入浅析c#中的预处理指令