我定义了一个头文件Var_Def.h 内容如下 #ifndef __VAR_DEF_H #define __VAR_DEF_H extern uint16_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). 这个能怎么解决呀? 是不是我头文件中的定义格式不对? |
想调用就这样写:extern uint16_t SRC_Buffer[12] ;
想定义申明就这样写:uint16_t SRC_Buffer[] = {0x8fff,0x8fff, 0x9fff, 0x9fff,0xbfff,0xbfff, 0xbfff, 0xefff,0xbfff,0xbfff, 0x0000,0x0000};
比如我要调用delay函数 写了个delay.c和delay.h文件
1 要在delay.h文件里写一句 #include "delay.c"
2 声明你在delay.c里写的函数delay();
3 main.c里要写#include "delay.h"
4 最重要的一步 不要在工程里添加delay.c文件 经我检测 是因为delay.c和main.c是同一级别的了 所以提示重复定义
还有一点 main.c里包含的文件 都会成为main.c里的子文件 子文件也可以在工程里双击打开
#define __VAR_DEF_H
extern uint16_t SRC_Buffer[12];
#define plas 99
#endif
我在别的文件中可以调用 plas, 可以编译通过,如果别的文件中访问SRC_Buffer这个变量,就提示
Undefined symbol SRC_Buffer (referred from stm32f10x_it.o). stm32f10x_it文件已经包含了这个头文件(ver_def.h)
全局变量要怎么定义呢?:'
不用写后面的数据定义。
#define __VAR_DEF_H
extern uint16_t SRC_Buffer[12];
#endif
Undefined symbol SRC_Buffer (referred from stm32f10x_it.o).
改成上面的格式,编译提示上面的错误,没有定义,我在文件中怎么访问和设置这个变量?
Var_Def.c中定义变量:
Var_Def.h中声明变量:
头文件stm32f10x_it.h包含头文件Var_Def.h
正解的。
神预测啊
1.定义?
2.声明?
3.赋值?
4.初始化?
对的,支持板凳的回答。