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.

[参考译文] TMS320F28388S:CLA 文件可以在 C++工程中编译吗?

Guru**** 2486815 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1435557/tms320f28388s-can-cla-files-be-built-in-a-c-project

器件型号:TMS320F28388S

工具与软件:

您好!

我们的项目是用 C++编写的、并且我们使用了"将 C 文件视为 C++文件(--cpp_default、-Fg)"语言模式。  现在我们正在尝试将 CLA 文件添加到项目中。  这会导致编译器尝试将 CLA 文件构建为 CPP 文件、并且失败:

CLA 不允许使用 C++源文件

如果未选中"将 C 文件视为 C++文件(-cpp_default、-fg)"框、仍然会失败、显示:

#35 #error 指令:"头文件 CLA 编译器不支持"       .ccsproject         / 第47行、外部位置:C:\ti\ccs1250\ccs\tools\compiler\ti-cgt-C2000_22.6.1.LTS \include\stdlib.h C/C++问题

但是 CLA 文件不使用 stdlib.h、我找不到任何可以自动包含它的选项。

是否有强制将 CLA 文件视为 C 文件的选项?

谢谢!

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

    尊敬的 Ed:

    具有.cla 扩展名的文件编译为 C 文件、并针对 CLA 调用编译器进行特殊调用。  

    您可能遇到的问题是编译器在执行--cpp_default 之前正在对--cla_support 标志进行评估、因此、在执行--cpp_default 评估时、.cla 文件已经被视为 C 文件。

    您可以尝试执行中的步骤 2.4.1设置默认编译器选项(C2000_C_OPTION) C28x 编译器指南( 此处为链接)的一节、用于定义您自己的编译器标志并在--cpp_default 标志之后移动--cla_support 标志。  

    此致、

    Delaney

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

    尊敬的 Delaney:

    这可以交换这两个标志的处理。  但是、所有其他标志也需要位于 C2000_C_OPTION 中吗?  换句话说、当使用 C2000_C_OPTION 时、编译器是从一组默认值开始、还是采用项目属性中已经存在的值并对其进行修改?

    谢谢!

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

    尊敬的 Ed:

    这是一个好问题、让我在其中一位编译器专家中循环评论。

    此致、

    Delaney

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有强制将 CLA 文件视为 C 文件的选项?

    否  但有一种方法可以解决问题。

    在 CLA 文件上使用 CCS 的文件特定选项功能。  使用它删除该选项 --- cpp_default 存储器映射。

    谢谢。此致、

    -George.

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

    您好、George:

    对于 CLA 文件、我未选中"Language Option"将 C 文件视为 C++文件(--cpp_defult、-Fg)"并将"C++源文件不允许用于 CLA"错误替换为"#35 #error 指令"头文件" CLA 编译器不支持"。  我仔细研究了编译器选项、但找不到任何提示它不要使用 stdlib.h 的内容、 我是否遗漏了一些内容?

    谢谢!

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

    必须是 CLA 文件以某种方式包含的情况 stdlib.h .  作为构建时实验、添加选项  ——gen_preprocessor_listing .  要了解该选项的作用、请在 C28x 编译器手册中搜索它。  此外、它会创建一个与源文件同名的文件、但文件扩展名更改为 .rl .  使用 .rl 来解决如何工作 stdlib.h 寄生效应。

    谢谢。此致、

    -George.

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

    我也有同样的想法。  因此我删除了.cla 文件中的所有内容、使其长度为0。  问题仍然存在。  在这两种情况下、RL 文件的前两行是:

    L 1" / "

    l 1 "C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/include/stdlib.h 1.

    因此、我觉得还必须有其他设置、我不知道该设置会自动包括 stdlib.h

    谢谢!

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

    您好、George:

    我找到了!  在 Include Options 中、有一个 stdlib.h 的预包含文件  我将其删除用于 CLA 文件、现在它已构建完成!  感谢您向我展示如何更改单个文件的属性。  这就为我提供了使它正常工作所需的工具。

    再次感谢、