ztyctao 发表于 2015-11-30 17:02:00

重复定义,怎么解决?

我定义了一个头文件Var_Def.h
内容如下
#ifndef __VAR_DEF_H
#define __VAR_DEF_H

externuint16_t   SRC_Buffer[] = {0x8fff,0x8fff, 0x9fff, 0x9fff,0xbfff,0xbfff,
         0xbfff, 0xefff,0xbfff,0xbfff, 0x0000,0x0000};

#endif
我在两个.c文件中调用了这个头文件,总是提示Symbol SRC_Buffer multiply defined (by stm32f10x_it.o and main.o). 这个能怎么解决呀?
是不是我头文件中的定义格式不对?

wu1169668869 发表于 2015-11-30 17:11:55

externuint16_t   SRC_Buffer[] ;
不用写后面的数据定义。

那就地方iv 发表于 2015-11-30 17:12:22

externuint16_t   SRC_Buffer[] = {0x8fff,0x8fff, 0x9fff, 0x9fff,0xbfff,0xbfff,0xbfff, 0xefff,0xbfff,0xbfff, 0x0000,0x0000};这些写法是错的;

想调用就这样写:externuint16_t   SRC_Buffer ;

想定义申明就这样写:uint16_t   SRC_Buffer[] = {0x8fff,0x8fff, 0x9fff, 0x9fff,0xbfff,0xbfff, 0xbfff, 0xefff,0xbfff,0xbfff, 0x0000,0x0000};

ztyctao 发表于 2015-11-30 17:30:09

#ifndef __VAR_DEF_H
#define __VAR_DEF_H

externuint16_t   SRC_Buffer;



#endif
Undefined symbol SRC_Buffer (referred from stm32f10x_it.o).
改成上面的格式,编译提示上面的错误,没有定义,我在文件中怎么访问和设置这个变量?

creep 发表于 2015-11-30 18:10:52

本帖最后由 creep 于 2015-11-30 18:12 编辑

Var_Def.c中定义变量:

uint16_t   SRC_Buffer[] = {0x8fff,0x8fff, 0x9fff, 0x9fff,0xbfff,0xbfff,
         0xbfff, 0xefff,0xbfff,0xbfff, 0x0000,0x0000};

Var_Def.h中声明变量:
externuint16_t   SRC_Buffer;
头文件stm32f10x_it.h包含头文件Var_Def.h

ztyctao 发表于 2015-11-30 18:24:39

#ifndef __VAR_DEF_H
#define __VAR_DEF_H

externuint16_t   SRC_Buffer;

#defineplas 99

#endif
我在别的文件中可以调用 plas, 可以编译通过,如果别的文件中访问SRC_Buffer这个变量,就提示
Undefined symbol SRC_Buffer (referred from stm32f10x_it.o). stm32f10x_it文件已经包含了这个头文件(ver_def.h)
全局变量要怎么定义呢?:'

yanhaijian 发表于 2015-11-30 18:45:33

wu1169668869 发表于 2015-11-30 17:11
externuint16_t   SRC_Buffer[] ;
不用写后面的数据定义。

正解的。

dsjsjf 发表于 2015-11-30 18:52:44

沙发正解

wu1169668869 发表于 2015-11-30 18:54:21

感觉楼主没有把c文件添加到工程里面?

ztyctao 发表于 2015-11-30 19:32:51

谢谢大家,我把c文件加进去就可以了。
页: [1] 2
查看完整版本: 重复定义,怎么解决?