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.

[参考译文] CCS12下用于在 CCS3.3下编译的代码的无法解释的编译器错误!

Guru**** 2535750 points
Other Parts Discussed in Thread: TMS320C5515

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1173203/unexplained-compiler-error-under-ccs12-for-code-that-used-to-compile-under-ccs3-3

Thread 中讨论的其他器件:TMS320C5515

您好!

我的这个问题主要与我所使用的新的 CCS12环境有关、其中一个导入项目的日期为 CCS3.3 Platimun 日。

我并不完全确定 CCS12下的编译 CCS3.3下的代码编译之间的区别是什么、但以下代码行在 CCS12下返回错误、而在 CCS3.3下使用 相同的编译器版本时、它的组合效果非常好:

(tsk_isTSK())? TSK_SLEEP (TSK_SLEEP_15ms):等待(150000);  //等待大约15ms。

返回到以上行的错误为: 第277行:错误#32:表达式必须具有算术类型

这一行代码用于编译、在 CCS3.3下不会出现任何问题

将以上行更改为:  

if (TSK_isTSK ())
    TSK_SLEEP (TSK_SLEEP_15ms);
其他
    等待(150000);

不会返回错误。 出于某种原因,编译器似乎会抱怨  上述三元表达式的 TSK_SLEEP (TSK_SLEEP_15ms)部分?!

我使用的编译器是 v4.4.1、DSP/BIOS 版本是5.42.2.10

正在为 TMS320C5515/05器件编译代码。

我想知道在 CCS12下进行编译有何不同? 请提出任何建议。

此致、Mike

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

    请添加构建选项 --verbose_diagnostics 并重新构建。  这会导致编译器回显与诊断关联的源代码行、并带有一个标记、指示错误在行上的起始位置。  有时、这使得更容易理解误差的原因。

    如果这不能解决问题,那么对于看到的源文件...

    [引用 userid="49966" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1173203/unexplained-compiler-error-under-ccs12-for-code-that-used-to-compile-under-ccs3-3 ]277行:错误#32:表达式必须具有算术类型[/quot]

    (笑声)  请按照文章 How to Submit a Compiler Test Case 中的说明进行操作

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    我按照建议添加了构建选项、并重新编译了代码。 与以前一样的错误,并且没有关于错误在行的起始位置的额外详细信息;-(

    但是、如果我编译以下行、工程编译时不会出现错误。

    (tsk_isTSK())? wait(150000): wait(150000);

    因此、它看起来会导致  编译器错误的 TSK_SLEEP (TSK_SLEEP_15ms)函数调用。 BTW 此函数/宏扩展为: (SEM_pend (&TSK_timerSem、5))

    为什么对 SEM_pend()的调用会导致问题?

    谢谢、Mike

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="49966" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1173203/unexplained-compiler-error-under-ccs12-for-code-that-used-to-compile-under-ccs3-3/4416826 #4416826"]为什么对 SEM_pend()的调用会导致问题?

    要理解这一点、我需要重现问题。  请提交我在上一帖子中请求的测试案例。

    谢谢、此致、

    乔治

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

    您好、George、

    我查看了您提到的案例提交过程、 对于我在编译时遇到的与三级运算符有关的问题而言、这似乎需要一些时间。

    我希望可以在使用 TI V4.1.1编译器和 DSP/BIOS 5.42.2.10版设置的任何 CCS12 PC 平台上执行此测试。

    因此、在深入研究了一些编译器选项之后、我尝试了编译器选项宽松解析-(非严格 ANSI)、现在编译没有问题。 因此,在 CCS3.3编译中使用的可能是这种情况,但从一个转换到另一个转换没有考虑到这一点,我使用了默认值... 因此,不管怎样,我现在都会检查它是否正确执行...

    那么,如果另两个选项是严格 ANSI 和非严格 ANSI,“语言设置”的默认模式(未标记)与什么等效?

    此致、Mike

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="49966" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1173203/unexplained-compiler-error-under-ccs12-for-code-that-used-to-compile-under-ccs3-3/4417386 #4417386"]“语言设置”的默认模式(未标记)是什么[/quot]

    请在 C55x 编译器手册中搜索 标题为 "更改 ANSI/ISO C 语言模式"的子章节。

    谢谢、此致、

    乔治

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

    你好、George、谢谢、没问题。