zoukankan      html  css  js  c++  java
  • C#预编译的问题

    C#预编译宏并不像C++那样编译之后就不存在了。在UNITY的C#脚本中

    #if UNITY_ANDROID && !UNITY_EDITOR
    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
    jo.Call("StartSpeeking");
    Debug.Log("==========start===========================");
    #endif

    像上面这段脚本,我们对它所在的工程打包成APK, 不管#if成不成立,这段代码总是会打进APK中,然后在运行时,#if后的条件如果成立了那么便执行这段代码。

    这根本不是预编译。在C/C++中的预编译则是在编译时直接根据条件把不符合的代码扔掉。如上面这段代码,若是C++,且#if后的条件不成立,那么这整段代码

    都不会被编译进EXE中。

    为什么C#会这样? 也许是因为C#编译成的APK或EXE或DLL只是中间语言,还需要经IL解释为汇编语言,然后再汇编成机器语言。在解释为汇编语言的过程中才进行像C/C++

    那样的真正预编译。

  • 相关阅读:
    HttpWatch 有火狐版本?
    JQgrid的最新API
    jqgrid
    JSON的学习网站
    array创建数组
    Numpy安装及测试
    SQLite3删除数据_7
    SQLite3修改数据_6
    SQLite3查询一条数据_5
    SQLite3查询所有数据_4
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/6475701.html
Copyright © 2011-2022 走看看