【发布时间】:2011-01-05 19:09:54
【问题描述】:
您好,我正在尝试找出在 BrewMP 上使用 C++ 可以实现和不可以实现的功能。
有没有人在 Brew(特别是 BrewMP)中使用 C++ 的第一手经验,并且可以说他们是否已经设法让这些东西在设备上运行而没有太多麻烦:
- 静态变量/函数
- 模板
- 例外情况
- 铸造 等
【问题讨论】:
标签: c++ brew-framework brewmp
您好,我正在尝试找出在 BrewMP 上使用 C++ 可以实现和不可以实现的功能。
有没有人在 Brew(特别是 BrewMP)中使用 C++ 的第一手经验,并且可以说他们是否已经设法让这些东西在设备上运行而没有太多麻烦:
【问题讨论】:
标签: c++ brew-framework brewmp
在 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 库或 c 运行时),例如 memset 和 sprintf。原因:在带有 main() 入口的通用进程模块中,C 运行时的那些在用户代码调用它们之前已经自动初始化。 BrewMP mod (mod1) 文件是动态加载和链接的。没有合适的时间调用初始化,这些MOD不应该单独调用C运行时初始化。
C++ 模板函数和模板类:模板代码实例化在编译时生成,它们不需要任何加载时和运行时代码初始化。它们可以在设备中安全使用。
C++ 异常:我没有测试它。在默认的 ARM 编译器选项中,未打开异常。并且异常需要启用 C++ RTTI。
C++ cast:dynamic_cast 是个大问题,因为它需要启用运行时类型识别,并在运行时进行类型检查。其他类型转换,例如 static_cast、reinterpret_cast 和 const_cast,只是编译器在编译时检查的提示。
【讨论】:
【讨论】: