同一个工程,有两个c文件uart.c和main.c. uart.c主要是处理串口初始化,发送,接收等.main.c对串口接收的字符串进行判断,处理.
在uart.c定义了一个串口接收字符数组.char xdata str[50].
然后在main函数也定义了一个相同的变量char xdata str[],都是全局变量.,编译器没有警告和错误,程序正常运行
为何两个变量重名编译器没有反应?
然而在main函数定义的变量里加上50;char xdata str[50];程序就提示变量多重定义;
在main.c定义char xdata str[50].在uart.c里面声明extern char xdata str[50].程序不能运行,keil 警告
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
什么原因? |