您好我正在尝试使用BrewMP上的C ++找出什么是可能的,哪些是不可能的。
有没有人有使用C ++和Brew的第一手经验,特别是BrewMP,并且可以说他们是否设法让这些东西在设备上运行而没有太多麻烦:
答案 0 :(得分:2)
在Brew3.X之前,不支持全局变量和静态变量。但是在Brew MP中,有一个ELF2MOD工具。有了这个,您可以使用全局和静态变量。
查看您的SDK路径,例如:
C:\ Program Files \ Qualcomm \ Brew MP SDK \ Toolset 7.10 Rev 10.0.1489821 \ bin
如果您的全局或静态数据是非POD(C ++对象,必须调用C ++类构造函数),请不要使用它。看到
https://developer.brewmp.com/forum/using-static-variables-classes-0
BrewMP中绝对禁止使用标准C库(stdc lib或c运行时),例如 memset 和 sprintf 。原因:在带有main()条目的通用流程模块中,C运行库的那些已经在用户代码调用它们之前自动初始化。 BrewMP mod(mod1)文件是动态加载和链接的。没有合适的时间来调用初始化,这些MOD不应单独调用C运行时初始化。
C ++模板函数和模板类:模板代码实例化是在编译时生成的,它们不需要任何加载时和运行时代码初始化。它们可以在设备中安全使用。
C ++异常:我没有测试过它。在默认的ARM编译器选项中,未启用异常。例外需要启用C ++ RTTI。
C ++强制转换:dynamic_cast是一个大问题,因为它需要支持运行时类型识别,并在运行时进行类型检查。其他强制转换,例如static_cast,reinterpret_cast和const_cast,只是编译器在编译时检查的提示。
答案 1 :(得分:1)