鱼C论坛

 找回密码
 立即注册
查看: 1601|回复: 6

[已解决]外部引用变量显示未定义

[复制链接]
发表于 2021-1-23 00:15:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
extern unsigned long arr[5];
unsigned long linearization(void)
{

  unsigned long temp = 0; //中值温度电压

      // 选择排序
     for (int i = 0; i<5; i++) //ADCN是采集的数据的个数
     {
         int k = i;
         for (int j = i+1; j<6; j++)
        {
             if (arr[j] < arr[k])// arr是采集的数据
                k = j;
         }
         if (k != i)
         {
             temp = arr[k];
             arr[k] = arr[i];
             arr[i] = temp;
         }
     }
     temp = arr[3];     //返回中值
   return temp;
}
红色·是我引用的unsigned long得数组 但是错误显示说我未定义 这是为啥啊
最佳答案
2021-1-23 00:53:31
本帖最后由 jackz007 于 2021-1-23 00:54 编辑
extern unsigned long arr[5];
        如果一个程序同时使用多个代码文件,你想使用在其它代码文件中定义的全局变量 arr 才会这样去声明,这样,代码文件在编译的时候不会报错,在连接的时候,如果在从其它代码文件编译出的 obj 中没有找到这个 arr ,就会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-23 00:38:35 | 显示全部楼层
extern unsigned long arr[5];
这一句只是声明,并未定义 arr[5]
你要在作用域内单独定义一遍
unsigned long arr[5];

C++ 的声明和定义是不一样的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-23 00:42:37 | 显示全部楼层
°蓝鲤歌蓝 发表于 2021-1-23 00:38
这一句只是声明,并未定义 arr[5]
你要在作用域内单独定义一遍

我是IAR 用的C语言啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-23 00:44:00 | 显示全部楼层
°蓝鲤歌蓝 发表于 2021-1-23 00:38
这一句只是声明,并未定义 arr[5]
你要在作用域内单独定义一遍

那要是重新定义的话不会对之前的变量有影响吗就是里面的数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-23 00:50:15 | 显示全部楼层
我爱Cyinyinyin 发表于 2021-1-23 00:44
那要是重新定义的话不会对之前的变量有影响吗就是里面的数

你里面都没数啊,怎么会有影响呢?
如果里面有数的话就说明 已经定义而且初始化了,就不会报这个错了。
你现在报这个错就是因为 你只声明了这个变量而已。
声明是不会给 变量 分配内存的,只有 定义 的时候才会分配内存。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-23 00:53:31 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-1-23 00:54 编辑
extern unsigned long arr[5];
        如果一个程序同时使用多个代码文件,你想使用在其它代码文件中定义的全局变量 arr 才会这样去声明,这样,代码文件在编译的时候不会报错,在连接的时候,如果在从其它代码文件编译出的 obj 中没有找到这个 arr ,就会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-23 17:45:57 | 显示全部楼层
jackz007 发表于 2021-1-23 00:53
如果一个程序同时使用多个代码文件,你想使用在其它代码文件中定义的全局变量 arr 才会这样去声 ...

那我是需要这个程序运行起来arr里面才会有值怎么办,做的传感器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 08:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表