C# 预处理器指令会影响编译过程。主要用途:1.在编译A版本时,可以使用预处理指令禁止编译器编译与与A版本无关的代码。2.在编写提供调试信息的代码时,也可以使用预处理器指令。
#if #else #elif #endif
流程控制。不会被执行的分支的代码在编辑器里会灰掉。
# define #undef
# define或#undef必须放在脚本的第一行,也就是放在所有using XXX;前面。和#if #else #elif #endif一起使用。
#define PI
using System;
class Program
{
static void Main(string[] args)
{
#if (PI)
Console.WriteLine("PI is defined"); //PI不存在,则这条语句不编译
#else
Console.WriteLine("PI is not defined"); //PI存在,则这条语句不编译
#endif
Console.ReadKey();
}
}
// 输出PI is defined
Unity提供了一些define预处理器指令(比如:UNITY_5_3_OR_NEWER表示Unity5.3以及更新的版本),可以专门为你的目标平台编译代码、限制Unity特定版本等。
#if UNITY_EDITOR // will be compiled no matter what Platform is set but only if you click "Play"
Debug.Log("Unity Editor");
#elif UNITY_IOS
Debug.Log("Unity IOS");
#elif UNITY_ANDROID // will be compiled if Platform is set to "Android" inside "Build Settings" dialog and you click "Build" or click "Play"
Debug.Log("Unity ANDROID");
#else
Debug.Log("Any other platform");
#endif
// 仅在Android设备上执行代码
#if UNITY_ANDROID && !UNITY_EDITOR
//code here
#endif
#region #endregion
这个两个用来组成代码块,不影响编译,只是为了使代码在屏幕上更好地布局。
#region A
// 逻辑代码
#endregion
效果:
#warning #error
#warning 指令,会给用户显示 #warning 指令后面的文本。
#error 指令,会给用户显示后面的文本,作为一条编译错误消息,以至于代码无法编译。
总结:1.使用 #warning 语句可以提醒自己在某个时刻执行某个操作,比如这个例子的警告就是“别忘了在给老板看前删了下方的代码”。2.使用 #error 语句可以检查 #define 语句是不是定义错了。
#pragma warning
可以抑制或还原指定编号的编译警告,举例如下:编号为CS1030的警告没了。
如果你的错误列表窗口不见了,点击视图->错误列表,就出来了。
再举一个例子:
如果没加#pragma warning disable 219
,结果如下: