嗨我試圖找出什麼是和不可能與BrewMP上的C++。Brew(MP)不支持C++的哪些部分?
沒有任何人有使用C++與啤酒,特別是BrewMP的第一手經驗,可以說,如果他們已成功地得到這些東西的設備上工作沒有太多的麻煩:
- 靜態變量/函數
- 模板
- 例外
- 鑄造 等
嗨我試圖找出什麼是和不可能與BrewMP上的C++。Brew(MP)不支持C++的哪些部分?
沒有任何人有使用C++與啤酒,特別是BrewMP的第一手經驗,可以說,如果他們已成功地得到這些東西的設備上工作沒有太多的麻煩:
在Brew3.X之前,不支持全局變量和靜態變量。但是在Brew MP中,有一個ELF2MOD工具。有了這個,你可以使用全局和靜態變量。
請參閱您的SDK路徑,如:
C:\ Program Files文件\高通\的Brew MP SDK \工具集7.10版本10.0.1489821 \ BIN
如果您的全局或靜態數據是非POD(C++對象,必須調用C++類的構造函數),請不要使用它。見 https://developer.brewmp.com/forum/using-static-variables-classes-0
標準C庫(LIB STDC或C運行時)是絕對禁止在BrewMP,如memset的和的sprintf。原因:在具有main()條目的通用處理模塊中,C運行時的那些模塊在用戶代碼調用之前已經自動初始化。 BrewMP mod(mod1)文件是動態加載和鏈接的。沒有適當的時間來調用初始化,並且這些MOD不應單獨調用C運行時初始化。
C++模板函數和模板類:模板代碼實例化在編譯時生成,它們不需要任何加載時間和運行時代碼初始化。它們可以在設備中安全使用。
C++異常:我沒有測試它。在默認的ARM編譯器選項中,異常未打開。異常需要啓用C++ RTTI。
C++類型cast:dynamic_cast是一個大問題,因爲它需要支持運行時類型標識,並在運行時進行類型檢查。其他強制轉換(如static_cast,reinterpret_cast和const_cast)只是編譯器在編譯時檢查的一個提示。
謝謝。你的意思是後鏈接機制?你能提供任何具體的例子嗎? – 2011-01-09 22:12:35
因爲這點2,你得重載operator new和使用malloc()和free()由提供刪除。 –
MikimotoH
2011-01-10 08:00:42
感謝您的詳細回覆,我很感激。 – 2011-01-11 17:30:48