2010-12-22 71 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