军事研究员 2024-08-22 10:50 采纳率: 97%
浏览 5
已采纳

SDK编译报错:sorry, unimplemented:

编译报错

img

src/module_moviemapping.cpp:81:1: sorry, unimplemented: non-trivial designated initializers not supported
   81 | };
      | ^
src/module_moviemapping.cpp:81:1: sorry, unimplemented: non-trivial designated initializers not supported
src/module_moviemapping.cpp:81:1: sorry, unimplemented: non-trivial designated initializers not supported
src/module_moviemapping.cpp:81:1: sorry, unimplemented: non-trivial designated initializers not supported
src/module_moviemapping.cpp:81:1: sorry, unimplemented: non-trivial designated initializers not supported
src/module_moviemapping.cpp:81:1: sorry, unimplemented: non-trivial designated initializers not supported
src/module_moviemapping.cpp:81:1: sorry, unimplemented: non-trivial designated initializers not supported

  • 写回答

2条回答 默认 最新

  • 清水白石008 2024-08-23 05:51
    关注
    🕒上午好,题主!目前:🟢[在线]
    📢参考GPT-4o mini 模型、由清水白石008整理提供!
    📣今日金句:“你必须成为你希望看到的改变。” — 甘地
    

    您遇到的编译错误信息 sorry, unimplemented: non-trivial designated initializers not supported 通常是由于使用了 GCC 编译器的某个版本,该版本不支持某些特性,尤其是与 C 语言的指定初始化器(designated initializers)相关的特性。

    什么是指定初始化器?

    指定初始化器允许您在初始化结构体或数组时,直接指定某个成员或元素的名称,而不是按照顺序进行初始化。例如:

    struct Point {
        int x;
        int y;
    };
    
    Point p = {.y = 5, .x = 10}; // 使用指定初始化器
    

    问题原因

    在某些较旧的 GCC 版本中,指定初始化器的支持可能不完整,尤其是对于“非平凡”的初始化(例如,包含嵌套结构体或复杂类型的初始化)。这可能导致编译器无法处理某些代码。

    解决方案

    1. 更新 GCC 版本

      • 如果可能,尝试更新到较新的 GCC 版本。较新的版本通常会更好地支持 C99 和 C11 标准中的特性。
    2. 修改代码

      • 如果更新编译器不可行,您可以尝试修改代码,避免使用指定初始化器。将结构体的初始化改为传统的按顺序初始化。例如:
      struct Point {
          int x;
          int y;
      };
      
      // 传统初始化
      Point p = {10, 5}; // 按顺序初始化
      
    3. 检查代码中的指定初始化器

      • 找到 src/module_moviemapping.cpp 文件中的第 81 行,查看是否使用了指定初始化器。如果是,考虑将其改为传统的初始化方式。
    4. 使用 C++ 编译器

      • 如果您的项目允许,考虑使用 C++ 编译器(如 g++),因为 C++ 对于某些初始化的支持可能更好。

    示例

    假设您在 module_moviemapping.cpp 中有如下代码:

    struct Movie {
        int id;
        const char *title;
    };
    
    Movie movies[] = {
        {.id = 1, .title = "Inception"},
        {.id = 2, .title = "Interstellar"}
    };
    

    您可以将其修改为:

    struct Movie {
        int id;
        const char *title;
    };
    
    Movie movies[] = {
        {1, "Inception"},
        {2, "Interstellar"}
    };
    

    总结

    通过更新编译器或修改代码以避免使用指定初始化器,您应该能够解决这个编译错误。如果您仍然遇到问题,请提供更多的代码上下文,以便更好地帮助您解决问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 9月11日
  • 创建了问题 8月22日

悬赏问题

  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵