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.

[参考译文] C2000-C2000- DIGITAL-CONTROL-LIBRARY:complex.h 在 C++中遇到错误

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1446421/c2000-digital-control-library-complex-h-getting-error-in-c

Thread 中讨论的其他器件:C2000WARE

工具与软件:

您好!

我发现自己的情况与上述有关问题相同。 尝试在 C++中编译包括 DCL.h 在内的源文件。

建议的权变措施是修改 DCL、从而删除使用 complex 类型。 我觉得不是个好主意、因为我一直尝试保持链接到 C2000Ware 的最新版本、该版本将在每次更新时覆盖更改。

正如 Han 在老问题中提到的那样、您是否正在为此寻求永久性解决方案?

此致

Agustin J. Gomez

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

    我在 GitHub 中找到了 C2000存储库、并开发了一个分支来链接我的项目。 我刚刚更改了我使用的库部分。

    此处更改:

    DCL c++兼容性:删除 complex.h 和 zpk。 switch pragma·agustinjgomez/c2000ware-core-sdk@0945fd3

    为了方便您参考、我试图在另一个环境中编译代码、也就是我的主机、一个具有 GCC 版本的 Linux。 我使用 c++98标志进行编译、唯一的问题是使用"复数"类型、但在 TI 的 C28x 实现中没有警告。 它们只是 UNDEF 的"复杂"。 然后、如果我只是更改 DCL 的代码以使用"_Complex"、而不是别名"Complex"、那么它就可以在这里运行。

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

    Agustin、您好!

    感谢您提出此问题、是的、复数类型在 c 和 C++之间是固有的不同。 C++现在建议使用 std::complex、而 C 中的 complex 扩展为_complex 关键字。  您的建议是有效的、但尽管如此、我相信 #pragma CODE_SECTION ()只能被 C28x 编译器识别、而不能被 GCC 识别、并且 DCL 针对带有大量 C28x 汇编函数的 C28x 编译器进行了优化。

    虽然我不能使 DCL 编译器不可知,但我可以像你建议 DCL 那样做一些更改,以确保 C 和 C++的兼容性。 尽管如此、直到25年第1季度、它才会反映在 C2000Ware 中。

    此致!

    Sen Wang

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

    尊敬的 Sen:  

    感谢您的回答。 最好遵守 C++。  

    为主机而不是目标进行编译的想法、只是允许在没有目标的情况下进行测试、可能是在云中进行测试。 不过、您不必担心这一点。  

    我可以包装库、伪装一些依赖项和/或使用定义" _TMS320C28XX_" 来使其编译

    此致

    Agustin J. Gomez

x 出现错误。请重试或与管理员联系。