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.

[参考译文] TMS320F28377D-TMS320F28377D-FET EP:无法执行快速整数除法

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1312278/tms320f28377d-ep-not-able-to-perform-fast-integer-division

器件型号:TMS320F28377D-TMS320F28375D-DSP EP

您好!

我无法执行快速整数除法。 我尝试了以下代码:

#include <stdlib.h>

int16_t testresult = 0;
testresult = __traditional_div_i16byi16(1,1);

出现以下错误:
#515无法将类型为"ldiv_t"的值分配给类型为"int16_t"的实体

为什么会发生这种情况?

我已启用--idiv0_support:

-v28 -ml -mt --cla_support=cla1 --float_support=fpu32 --idiv_support=idiv0 --tmu_support=tmu0 --vcu_support=vcu2 -o4 --opt_for_speed=5 --fp_mode=relaxed --fp_reassoc=on --

我不能使用以下任何选项:

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

    您好、Arun、

    出现以下错误:
    #515无法将类型为"ldiv_t"的值分配给类型为"int16_t"的实体

    为什么会发生这种情况?

    [/报价]

    该函数的结果 与 int16_t 的数据类型不同、它与错误的含义不同。 返回的结果使用 ldiv_t 数据类型。 ldiv_t 数据类型是根据"int"数据类型在 stdlib.h 文件中创建的、因此您可以尝试手动转换它、看看它是否有效(否则、您可能需要更大的数据类型、例如 int32_t)。

    我不能使用其中任何一个:

    您能解释一下这句话是什么意思吗?  您遇到的是相同的错误、还是编译器甚至不知道这些函数存在?

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

    您好、Omer:

    我尝试将数据类型设置为 idiv_t:

    #include <stdlib.h>
    
    Idiv_t testresult = 0;
    testresult = __traditional_div_i16byi16(1,1);

    但 idiv_t 本身未定义、我收到以下错误:

    #20标识符"idiv_t"未定义。

    仔细观察函数定义、我忘记了结尾处的".quot"。

    当我尝试此功能时:

    #include <stdlib.h>
    
    int16_t testresult = 0;
    testresult = __traditional_div_i16byi16(1,1).quot;

    代码可以编译、但不执行除法。 testresult 的值始终为0!!

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

    根据 此处附加的代码、您键入的是 大写字母"i"、而不是小写字母"l"("L")。 您可以检查 stdlib.h 文件以确保正确。

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

    谢谢,我忽略了误输入的错误。