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/TM4C123GE6PM:了解为什么变量在我的 main.c 中不可见

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/738927/ccs-tm4c123ge6pm-understanding-why-a-variable-is-invisible-in-my-main-c

器件型号:TM4C123GE6PM

工具/软件:Code Composer Studio

您好!

我在.c 文件中定义了一个变量、如下所示:

包含易失性 bool g_bMPU6050Done;// stdbool.h。

此文件已添加到我的 CCS 项目中。

当我尝试在 main.c 内的某个函数中使用它时、我会遇到以下错误:

说明资源路径位置类型
#20标识符"g_bMPU6050DOne"未定义

当我将"volatile bool g_bMPU6050Done;"定义移动到另一个.h 文件时、该文件也添加到我的项目中-编译完成、没有错误。

为什么会发生这种情况?

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

    我们实际上并不是一个通用的 C 代码支持、如果是编译器特定的问题、那么您应该咨询 CCS 论坛。

    尽管如此、我很想了解这个问题、那就是您需要将其声明为一个位置、然后通过'extern '关键字将其提供给其他文件。

    因此、声明的源文件将为"volatile bool g_bMPU6050Done;"

    使用它的其他文件是"extern volatile bool g_bMPU6050Done;"

    我认为这可以解决它、但如果不能解决、您需要使用 CCS 来检查它是特定于编译器的、还是像 stackoverflow 这样的通用 C 代码论坛。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢。
    我将其发布在 CCS 论坛上。
    e2e.ti.com/.../738931

    使用"extern "不起作用。 我认为它是冗余的。
    据我所知、C (与 C++不同)默认将包含的文件的所有变量视为外部变量。