【问题标题】:Blackberry Multiple OS version compatibility issue黑莓多操作系统版本兼容性问题
【发布时间】:2011-07-21 14:23:31
【问题描述】:

我在 BlackBerry OS 5.0 上开发了一个聊天应用程序,但我的客户希望我将它移植到从 4.5 到 5.0 及更高版本的所有平台。 我曾尝试使用预处理器指令在运行时编译操作系统兼容的类,但我还没有成功。我怀疑我使用预处理器的方式。所以我在这里举一个例子:

//#ifdef JDE_4_6_0_AND_ABOVE
/*
//#endif

//some code

//#ifdef JDE_4_6_0_AND_ABOVE
*/
//#endif


//#ifndef JDE_4_6_0_AND_ABOVE
/*
//#endif

//Alternative of code used above

//#ifndef JDE_4_6_0_AND_ABOVE
*/
//#endif

这就是我为代码的特定部分所做的方式。这里的逻辑是,如果操作系统版本为 4.6 及以上,则使用第一个代码……如果操作系统版本低于 4.6,则使用第二个代码……

但预处理器下的代码似乎在这两种情况下都无法编译。

注意:我已将“//#preprocess”放在代码的开头,并在我的应用程序描述符 xml 文件中定义了预处理器,但仍然没有运气。还有其他解决方案来处理 BBOS 版本之间的兼容性吗?

【问题讨论】:

    标签: blackberry java-me preprocessor compatibility


    【解决方案1】:

    您将代码放在语句之外。 ifdef 和 ifndef 打开语句, endif 关闭语句。您也可以使用#else,因为您只有两种情况。

    //#ifdef JDE_4_6_0_AND_ABOVE
    
    System.out.println("JDE_4_6_0_AND_ABOVE");
    
    //#else
    
    System.out.println("NOT JDE_4_6_0_AND_ABOVE");
    
    //#endif
    

    干杯

    【讨论】:

    • 代码之前的格式不是很好,因此可能很难看到,但 user856065 正在使用预处理器添加/删除注释块。
    • @Michael:我看到一些教程网站建议这样做,但我对这种方法也不太满意。我使用 Ray 将代码放在 #if 块中的方法,这对我来说很好。
    • 噢!我刚刚点击。如果原始代码是原始代码,而不仅仅是 cut'n'paste 的结果,那么它就不会起作用,因为注释开启者/关闭者不能与 //#ifdef //#endif (@Michael this可能有一次清理代码打破了这个问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多