关于C语言中变量在两个.C文件中的调用问题
我使用KEIL环境假设我现在有一个tmp变量,我将在main函数中使用它现在还有一个hal.c文件,我将在hal,c中使用tmp变量。为了在两个文件中都能使用tmp变量,...
我使用KEIL环境
假设我现在有一个tmp变量,我将在main函数中使用它
现在还有一个hal.c文件,我将在hal,c中使用tmp变量。
为了在两个文件中都能使用tmp变量,所以我在hal.h中对tmp进行了声明。
然后,在main中include了hal.h,在hal.c中也include的hal.h文件。
单个编译main或者hal.c都可以通过。
但是编译整个工程就报错。
..\List\GPIO.axf: Error: L6200E: Symbol picture_state multiply defined (by hal.o and main.o).
说我两边重定义了。
同时还出现了这个warning
..\src\link.h(5): warning: #1-D: last line of file ends without a newline
我的hal.h是这样写的,看看对不对
#ifndef HAL_H
#define HAL_H
unsigned char tmp=0; //图片状态 第几张
#endif
希望能有详细的解答,如果问题解决了,我再给20分。
最后能在原理上帮我理一理,万分感激!
P.S. 这种情况,用指针会不会更好,怎么用? 展开
假设我现在有一个tmp变量,我将在main函数中使用它
现在还有一个hal.c文件,我将在hal,c中使用tmp变量。
为了在两个文件中都能使用tmp变量,所以我在hal.h中对tmp进行了声明。
然后,在main中include了hal.h,在hal.c中也include的hal.h文件。
单个编译main或者hal.c都可以通过。
但是编译整个工程就报错。
..\List\GPIO.axf: Error: L6200E: Symbol picture_state multiply defined (by hal.o and main.o).
说我两边重定义了。
同时还出现了这个warning
..\src\link.h(5): warning: #1-D: last line of file ends without a newline
我的hal.h是这样写的,看看对不对
#ifndef HAL_H
#define HAL_H
unsigned char tmp=0; //图片状态 第几张
#endif
希望能有详细的解答,如果问题解决了,我再给20分。
最后能在原理上帮我理一理,万分感激!
P.S. 这种情况,用指针会不会更好,怎么用? 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询