C#的预处理指令是一个很好的功能 , 比如你的这个系统可能在Windows , IOS , ANDROID等等上面运行 , 你不会是想要告诉我开发3个甚至更多的系统分别为他们服务吧 ? 实际上, 他们的功能都是一样的 , 只是细微的实现方式不一样 , 想想看 !!!也许你会说 , 做一个全局控制的状态机 , 修改状态来实现控制平台的效果 , 没错 , 这个可以做 , 可以实现 。 但是你把这个系统放在Windows上那么IOS , ANDROID 等功能都在里面只是永远不会执行 , 这不仅导致系统大 , 而且还没必要的消耗了内存。完美的解决方案就是C#的预处理指令 , 先来一段代码 :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Mymc { class Program { //a ss = new a(); static void Main(string[] args) { #if (A) Console.WriteLine("A"); #elif (B) Console.WriteLine("B"); #else Console.WriteLine("C"); #endif #if (WEB_PLAYER) Console.WriteLine("这是网页游戏"); #elif (IOS_PLAYER) Console.WriteLine("Apple平台"); #elif (ANDROID_PLAYER) Console.WriteLine("安卓平台"); #else Console.WriteLine("其他平台"); #endif #if DEBUG Console.WriteLine("处于Debug模式"); #endif Console.ReadLine(); } } }
传统的方式是这样的 : 看下面
用#define但是这个有个缺陷 : 你做的每一个类如果要有区分的话都要加 : #define WEB_PLAYER , 累死你 。我们可以不加这 , 用VS编译的时候加 。 方案如下 :先上图
在项目上右击->属性 , 在“生成”中可以配置 这些全局的#define , 在C++应该叫宏吧。相当于宏
注意 : Q 和 WEB_PLAYER 中间用; 隔开
看下结果 :
转载于:https://blog.51cto.com/aonaufly/1609745