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.

[参考译文] CCS/TM4C123GH6PM:是一个浮点、不允许使用其表达式中的变量进行计算。 "表达式必须有常量值"

Guru**** 2458520 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/647018/ccs-tm4c123gh6pm-is-a-float-not-allowed-to-be-evaluated-using-a-variable-within-its-expression-expression-must-have-a-constant-value

器件型号:TM4C123GH6PM

工具/软件:Code Composer Studio

你(们)好

我正在进行浮点计算、但在编译代码时遇到错误。

float PI = 3.14159265358979323846f;

浮点 GyroMeasurError = PI *(60.0f/180.0f);  

float beta = sqrt (3.0F / 4.0f)* GyroMeasError;  

计算  GyroMeasError 和  β 的行会出现该误差。

错误#28:表达式必须具有常量值

错误#60:常量表达式中不允许函数调用

谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    初始化程序必须是常量表达式。 两个粗体声明都没有常量初始化器、第一个在初始化器中有一个变量、第二个有一个函数调用。

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

    感谢 Robert、这很有意义。 我必须重新配置编译器设置、以便 C++ sulport 能够使其正常工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    或者、您也可以单独执行与声明分开的初始化。 这在任何情况下都很可能导致更清晰的代码。

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不错的建议、我会尝试这样做。

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

    #define PI = 3.14159265358979323846f

    然后您的 GyroMeasError 初始化应该有效。

    我不确定 CCS 如何处理 const 参数、但最好对常量进行限定、因为编译器有时可以为您提供更小/更快的代码、目的可能更清晰、而 GyroMeasError 可能会编译为:

    const float PI = 3.14159265358979323846f;