【问题标题】:compiler says the extern variable is not defined编译器说未定义外部变量
【发布时间】:2023-03-16 23:20:01
【问题描述】:

IAR 编译器针对以下代码收到“错误[Pe020]:标识符“mVar”未定义”。

我应该如何使用外部变量?我看不出我做错了什么。

//commonDefs.h

#include <stdint.h>
extern uint16_t mVar;

//file1.c

...
uint16_t mVar; //global declaration
...
static void food( void){
     mVar = 10;
}

//file2.c

uint16_t compVar;
...
static void mFoo( void ){
     if( compVar > mVar){
          ...
      }
}

【问题讨论】:

  • 您是否#include commonDefs.h?
  • 这不是评论,而是答案 :) 请重新发布作为答案 抱歉问这样的菜鸟问题。
  • 每个人都曾经是菜鸟, 当有些人还是菜鸟时,他们必须花费很多时间来弄清楚菜鸟的东西...现在它是如此简单.. . 我希望这个网站很久以前就存在了

标签: c extern iar


【解决方案1】:

在标头中将 mVar 声明为 uint16_t 并在引用另一个源文件中声明的变量时使用 extern,即仅在源文件中使用 extern。当您将extern 放在变量前面时,链接器将在别处查找定义

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多