【问题标题】:IAR Embedded Workbench : Unknown or ambiguous symbolIAR Embedded Workbench:未知或模棱两可的符号
【发布时间】:2016-06-05 13:36:06
【问题描述】:

解决了。

我试图控制 IAR Embedded Workbench 中的变量值(使用 STM32F303xC 微控制器)。我将 library.h 文件中的变量声明为:

extern int my_variable1;
extern float another_variable //... etc

然后在 library.c 中

int my_variable1 = 15;
float another_variable = 328.47;

在 main.c 中

my_variable1 = 38;
another_variable = pow(10,2) + another_variable/8

但在观看、实时观看和快速观看中会出现错误:(第 1 列)未知或模棱两可的符号。

我用这个 IDE 编写了几个程序,静态变量的声明工作,它允许我使用手表查看变量的值。在其他程序中,我将变量声明为

int my_variable1;

在主文件中,在主函数之外,它也可以工作。

我该如何解决这个错误?

就我们而言,真正的问题似乎是:

有没有办法在 IAR Embedded Workbench 中显示 .c-s 之间共享的变量值?

【问题讨论】:

  • 将静态变量声明为标头的范围是什么?..
  • 这样你就可以只读取 .h 并识别所有的变量和这个头文件提供的函数。
  • 没有理由一开始就在头文件中声明变量。使变量“全局静态”更没有意义,就像去油漆店要“白黑”油漆一样。
  • 此外,通过这种方式,您可以只共享 .h 中的声明而不共享 .c 文件(和源代码)
  • 全局静态是一种矛盾

标签: c microcontroller watch stm32 iar


【解决方案1】:

IDE Embedded Workbench 作为一种优化形式,不会分配已声明但未使用的变量。所以这些变量不能在手表中显示。

【讨论】:

    【解决方案2】:

    问题是你声明了静态变量。

    这意味着对于#include hedaer 文件的每个文件,您将拥有这些变量的离散副本。

    我猜想,只要您在特定函数文件中中断执行,静态手表就可以工作。它将向您显示变量的本地范围副本。

    【讨论】:

    • 我应该如何声明一个必须由多个.c 使用的变量?作为外部人员? (我也有错误)
    • @EagleOne 肯定不是静态的。 int var;.c 文件中。 extern int var; 到头文件中。
    • 使用来自stackoverflow.com/questions/1045501/…stackoverflow.com/questions/3010647/… 的答案更新了问题,但仍然无法正常工作
    • @EagleOne 在您的项目中每个变量名称是否都是唯一的?
    • 是的。在 lib.h 中声明为 extern,在 lib.c 中声明和定义,并在 main.c 中的某些操作中使用
    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 2013-10-20
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多