嗨,我试图找出在BrewMP上使用C++的可能和不可能。

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

  • 静态变量/函数
  • 模板
  • 异常(exception)
  • 铸造
  • 最佳答案

  • 在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++异常(exception):我没有测试过。在默认的ARM编译器选项中,未打开异常。并且异常(exception)需要启用C++ RTTI。
  • C++ Cast:dynamic_cast是个大问题,因为它需要启用支持的运行时类型识别,并在运行时进行类型检查。其他强制转换,例如static_cast,reinterpret_cast和const_cast,仅是编译器在编译时检查的提示。
  • 10-08 09:38