2010-12-22 74 views
1

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

我跟着http://smartfone-more.blogspot.com/2010/05/coding-for-multiple-blackberry-devices.html的提示,它用// ifndef的两个块阻止//#ifdef注释。

基本上

//#ifdef MY_FLAG 
my logic 
//endif 

变成

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

,使得蚀忽略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 

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

回答

3

预处理程序语句在编译时执行。编译可能需要稍长的时间(并且我们正在讨论的时间非常短),但在运行时不会有任何性能问题。

+0

这里有人呼应相同http://www.blackberryforums.com/developer-forum /242164-regarding-blackberry-preprocessor-eclipse.html#post1687274 – arin 2010-12-22 18:39:14

0

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

我一直无法使用任何各种围绕网络发布手段......

不应该是这个困难,但是,嘿,这是黑莓)

+0

带有if else块的普通JDE预处理器解决方案在我的情况下不起作用。无论何时我将Blackberry组件更改为4.5 ... eclipse在代码 – arin 2010-12-22 18:41:18