zoukankan      html  css  js  c++  java
  • C# #if、#endif和预处理指令




    参考博客:朝向远方 仧砉

    #if、#else、#eif、#endif

    以前自己做开发的时候,基本没有怎么用过C#的#if之类的预处理指令。实习了之后,发现项目中C#代码部分用了很多预处理指令。所以学习了一下。

    这几个#if的用法和if-else语句差不多,都是如果满足条件则会执行。但不同的是这里往往使用的是预处理指令。

    举个小栗子:使用系统内置指令
    一般可以让不同的版本或者不同的平台执行一些不同的测试代码,来帮助我们调试。

    //VS会在编写代码时就自动判断出将会执行哪个代码块,并把不会执行的置灰。(VS牛批!!!)
    //当游戏处于编辑器阶段即还未发布时(可以在VS中改变调试的模式为Release)
    #if DEBUG
        Debug.Log("当前是编辑器模式");
    #else
        Debug.Log("当前不是编辑器模式");
    #endif   
    

    #define、#undef

    使用#define我们可以自定义指令。
    使用#undef可以取消定义的指令。
    注意:

    • define指令需要放在using之前使用
    • define指令不能用于声明常量值

    举个小栗子:自定义指令

    //定义放在using之前
    #define TEST
    using ***
    
    //执行代码部分
    #if TEST
        //当我们注释掉定义时,VS中代码块内容也会自动置灰
        Debug.Log("你好呀");
    #endif   
    

    系统内置预处理指令总结

    官网地址:https://docs.unity3d.com/2019.1/Documentation/Manual/PlatformDependentCompilation.html

    Unity支持的平台#define指令如下:


    从Unity 2.6.0开始,你可以有选择地编译代码。可用的选项取决于您正在编辑的编辑器的版本。给定版本号XYZ(例如,2.6.0),Unity公开以下格式的三个全局#define指令:UNITY_X,UNITY_X_Y和UNITY_X_Y_Z。


    从Unity 5.3.4开始,您可以根据Unity编译或执行给定代码所需的最早版本的Unity来选择性地编译代码。给定与上述(XYZ)相同的版本格式,Unity 将以UNITY_X_Y_OR_NEWER格式公开一个全局#define ,可用于此目的。

  • 相关阅读:
    temp12
    temp111
    test.c
    vipLogin.c
    services.c
    request.c
    managerLogin.c
    将博客搬至CSDN
    SpringMabatis整合项目mybatis-configuration.xml核心配置
    logback-test.xml配置文件模板
  • 原文地址:https://www.cnblogs.com/Fflyqaq/p/13657498.html
Copyright © 2011-2022 走看看