【问题标题】:Blackberry preprocessor in eclipseeclipse中的黑莓预处理器
【发布时间】:2010-12-22 13:59:16
【问题描述】:

我对黑莓预处理有疑问。我正在使用 eclipse 并维护一个与基于触摸的设备和 qwerty 设备兼容的代码库。 现在 Eclipse 的一个众所周知的问题是......当您更改 4.5 的黑莓安装组件时,它开始显示触摸特定 API 部分的编译错误,即使我将它们放在预处理器块中也是如此。请注意,在 4.7 和 4.5 下编译时,相同的代码在 JDE 中不会出现任何错误。

我遵循了来自http://smartfone-more.blogspot.com/2010/05/coding-for-multiple-blackberry-devices.html 的提示,该块将 //#ifdef 与 //ifndef 的两个块相匹配。

基本上

//#ifdef MY_FLAG
my logic
//endif

变成了

//#ifndef
/*
//#endif
mylogic
//#ifndef
*/
//#endif

以便 Eclipse 忽略 4.5 组件中基于触摸的代码。

现在我有一个问题,

假设我有一个这样的预处理器 if-else 块:

//#ifdef MY_FLAG
my logic for touch
//#elseif
my logic for qwerty
//endif

我可以这样重写这些东西吗:

//#ifndef MY_FLAG
/*
//#endif
my logic for touch
//#ifndef
*/
//#endif

//#ifndef MY_FLAG
my logic for qwerty
//#endif

所以现在有 2 个 if 块,而不是 1 个 if-else 块。是否会因此产生任何性能问题?基本上,它们是一样的吗?

【问题讨论】:

    标签: blackberry preprocessor


    【解决方案1】:

    预处理器语句在编译时执行。编译可能需要稍长的时间(而且我们所说的时间非常短),但在运行时不会出现任何性能问题。

    【讨论】:

    【解决方案2】:

    你真的有这个工作吗?您的 4.5 没有编译,但您的 4.7+ 触摸代码编译并工作了吗? Eclipse 实际上创建了一个文件(在 /.preprocessed/ 中),它代表它应该做什么,但是在编译时完全忽略了这些指令......在我的例子中

    使用网上发布的各种方法,我一直无法让这个工作......

    不应该这么难,但是嘿,这是黑莓;)

    【讨论】:

    • 带有 if else 块的普通 JDE 预处理器解决方案在我的情况下不起作用。每当我将 Blackberry 组件更改为 4.5... eclipse 在代码中显示 touchEvent 引用的错误
    • 顺便说一句,我完全同意你的看法。黑莓开发者真的很蛋疼!
    • 我无法让预处理器在 4.7 中运行,因为 4.7 代码被混淆了——整个隐藏在 cmets 废话中......新的保险杠贴纸:我宁愿编写 Android 代码!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多