c++ - Brew (MP) 支持/不支持 C++ 的哪些部分?

标签 c++ brew-framework brewmp

您好,我正在尝试找出在 BrewMP 上使用 C++ 可以做什么和不可以做什么。

有没有人有将 C++ 与 Brew(特别是 BrewMP)结合使用的第一手经验,并且可以说他们是否已经设法让这些东西在没有太多麻烦的情况下在设备上运行:

  • 静态变量/函数
  • 模板
  • 异常(exception)情况
  • 选角 等

最佳答案

  1. 在 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

  2. BrewMP 中绝对禁止使用标准 C 库(stdc lib,或 c runtime),例如 memsetsprintf。原因:在具有 main() 入口的通用进程模块中,C 运行时的那些在用户代码调用它们之前已经自动初始化。 BrewMP mod (mod1) 文件是动态加载和链接的。没有合适的时机调用初始化,这些MOD不应该单独调用C运行时初始化。

  3. C++模板函数和模板类:模板代码实例化在编译时生成,不需要任何加载时和运行时代码初始化。它们可以在设备中安全使用。

  4. C++ 异常:我没有测试它。在默认的 ARM 编译器选项中,异常没有打开。并且异常需要启用 C++ RTTI。

  5. C++ cast:dynamic_cast 是个大问题,因为它需要启用运行时类型识别,并在运行时进行类型检查。其他类型转换,例如 static_cast、reinterpret_cast 和 const_cast,只是提示编译器在编译时进行检查。

关于c++ - Brew (MP) 支持/不支持 C++ 的哪些部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4608195/

相关文章:

gcc - 禁止将警告视为错误 (cc1.exe)

c++ - HTC Smart 中的主页按钮事件是否传送到我自己的应用程序?

c++ - COM 自动化后 Excel 进程不会退出

c++ - 移动构造函数和赋值运算符 : why no default for derived classes?

c++ - 多维数组作为平面数组问题

crash - 在Brew MP手机上激活虚拟键盘?

c - 如何在 Brew 上检测手机品牌和型号信息?

c++ - 不破坏上下文的常见 OpenGL 清理操作

c++ - OpenCV 错误 : Assertion failed (a_size. 宽度 == 长度)