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.

[参考译文] MSP430FR2355:在主文件中使用 extern、在第二个文件中使用静态变量

Guru**** 2538955 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/982324/msp430fr2355-using-extern-in-main-file-on-a-static-variable-in-a-second-file

器件型号:MSP430FR2355

我在函数外部的文件中定义了一个静态 uint 变量 NodeCounter (请参阅下文)。  它只不过是函数中其他 NodeCounterXXXXX 的总和。

静态 uint NodeCounter = 0;

void processRFMessage (void)
{
静态 uint i;
静态 uint NodeCounterReuse = 0、NodeCounterPreExisting = 0、NodeCounterNew = 0;
} 

我有第二个文件 main.c、其中我尝试"查看/使用"该变量。 它被定义为"在 main 的范围之外"(在文件的顶部)

extern uint NodeCounter;

我遇到的问题是、如果我在主代码中停止代码、调试器会报告它"找不到标识符"。 代码按预期工作、我可以在 file.c 中很好地看到该变量。  有人能告诉我我我是否正在使用 extern、为什么我在 main 中看不到这个变量、我需要做什么才能在 main.c 中看到它?

谢谢

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

    具有静态作用域的变量在中声明的文件之外不可见。 (再说一次、非常基本的 C)它们通常也不会获得供调试器使用的符号名称。

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

    我很抱歉、如果问题是"简单"的、因为我是一名硬件人员、最近进行了编程、所以我不知道软件的所有输入/输出。  在不同文件中的函数中声明变量的最佳方式是什么、这样它具有保留功能并可用于其他文件?

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

    定义"uint nodeCounter = 0;"(不带"静态")。 这将使其在全局范围内可见。

    在另一个文件中将其声明为"extern uint nodeCounter;"、这将告诉链接器查找它。

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

    谢谢 Bruce。

    这正是我最终的目的。。。