This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSPM0L1306:引用 C++ std lib 符号的语义错误、但工程构建成功

Guru**** 2430620 points
Other Parts Discussed in Thread: MSPM0L1306

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1365188/mspm0l1306-semantic-errors-referencing-c-std-lib-symbols-but-project-builds-successfully

器件型号:MSPM0L1306

我正在 CCS 项目中、从应用中心为 MSPM0L1306使用 GCC 9。 我的代码引用了一些 C++标准库符号、例如 std::array、std:begin 和 std::end。 工程构建成功、但这些符号在 CCS 中标记为语义错误、表示无法解析该符号。 查看项目中的 include dirs 列表时、gcc include/c++/9.2.1文件夹未直接包含在列表中。 我想这就是 CCS 无法解析 std 符号的原因。 我也假设编译器会自动包含 C++源文件的该 dir。

如何调整工程配置、以便 CCS 可以解析这些 C++ std 符号?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gordon、

    我想您可以参阅这篇 E2E 文章中提到的方法。

    (+) CCS:如何创建 C++工程? 有模板吗? - Code Composer Studio 论坛- Code Composer Studio ︎- TI E2E 支持论坛

    M0项目还具有语言配置、您可以尝试进行一些修改、并尝试检查修改此配置是否可以帮助您解决此问题。

    我认为、您需要检查哪个 GCC 版本支持哪个 C++版本。

    关于 GCC 编译器为什么不自动包含 C++源文件的该目录、我想您可以联系负责开发和支持 GCC 编译器的公司。

    此致、

    K·扬茨

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Janz:

    我基本上执行了该线程所描述的操作。 我将 main.c 重命名为 main.cpp。 GCC 成功编译它、没有错误。

    然而、CCS 本身会在问题窗口中显示这些"语义错误"。 我认为 CCS 不知道编译器会自动将此目录包含在 C++头文件中。 我不知道 CCS 中告诉它如何查找这些 C++头文件的正确方法是什么。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gordon、

    我会将此 E2E 帖子交给我们的 SDTO 团队、他们会就此问题为您提供帮助。

    此致、

    K·扬茨

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    戈登、

    可以在此处指定头文件搜索路径:

    此致、

    约翰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将包含 C++头文件的文件夹添加到了该列表、但在 CCS 中仍然可以看到这些符号的错误、即使我可以按住 Ctrl 键并单击导航到这些符号、GCC 也会毫无错误地构建工程。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    戈登、

    总的来说、我们发现 Eclipse 中的静态分析特性有问题。  因此我们默认将其关闭。

    如果您希望将其保持开启状态、我可以建议的最佳做法是禁用该特定规则。

    使用 MSPM0时的另一个选项是尝试更新的 CCS Theia、它使用完全不同的编辑器。  这是 MSPM0的默认环境。

    https://www.ti.com/tool/download/CCSTUDIO-THEIA/1.4.0

    它集成了 Clang Tidy。  我不确定使用 GCC 与 Clang 编译器时启用了多少 tidy。  我需要提出相关的问题。

    此致、

    约翰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、我来了解一下 CCS Theia。 项目文件格式是否兼容?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、项目是兼容的。  您可以直接将现有项目导入 CCS Theia。   SDK 中的示例也是如此。

    我们仍在为 CCS Eclipse 发布服务、但是计划在年底之前完全转换为 Theia。

    此致、

    约翰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    CCS Theia 处理得更好。 谢谢!

    CCS Theia 是否具有与原始 CCS 相同的功能?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它因使用的器件而异。  例如、缺少一些多核调试功能、但这些功能不会影响 MSPM0。

    对于 MSPM0、主要特性应该都具备。  但是、它是一个不同的环境。  它使用 Theia 应用程序框架、提供更像 VS Code 的体验。   

    约翰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否有类似 AppCenter 的东西用于安装 GCC 等工具?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    存在 Resource Explorer。  如果 SDK 将 GCC 指定为依赖项、则它将允许您下载所需的版本。 也可以通过这种方式提供已安装 GCC 版本的更新、即如果您有 GCC 9.2.1、并且我们打包了已更新的9.2、则您在检查更新时会看到它。

    约翰