大神求救:51单片机发送字符串显示零

[复制链接]
4999|56
 楼主| Jinss 发表于 2014-9-10 16:53 | 显示全部楼层
不过字符串全局变量使用和定义的问题还是不知道怎么处理。有前辈知道么?
 楼主| Jinss 发表于 2014-9-10 16:54 | 显示全部楼层
我刚才试了半个小时没试出来。前辈能举个具体的例子吗?
 楼主| Jinss 发表于 2014-9-10 16:56 | 显示全部楼层
我是把字符数组放在头文件中,在C文件中使用。不知道怎么用,希望前辈教下小弟。
 楼主| Jinss 发表于 2014-9-10 17:01 | 显示全部楼层
coody 发表于 2014-9-10 16:27
你开了串口中断又没有串口中断服务函数?

我只发数据,用查询方式可以吗?谢前辈不吝赐教。
wangch_sh 发表于 2014-9-10 17:03 | 显示全部楼层
变量放在C文件中。
在一个C文件中定义  unsigned char buffer[10];
在另一个C文件中定义 extern unsigned char buffer[10];
 楼主| Jinss 发表于 2014-9-10 17:06 | 显示全部楼层
wangch_sh 发表于 2014-9-10 17:03
变量放在C文件中。
在一个C文件中定义  unsigned char buffer[10];
在另一个C文件中定义 extern unsigned c ...

前辈我可不可以把全局变量放在头文件中声明?
 楼主| Jinss 发表于 2014-9-10 17:08 | 显示全部楼层
请前辈明示。
wangch_sh 发表于 2014-9-10 17:11 | 显示全部楼层
你可以试一试。我都是在C文件中声明的。
ningling_21 发表于 2014-9-10 17:18 | 显示全部楼层
Jinss 发表于 2014-9-10 17:06
前辈我可不可以把全局变量放在头文件中声明?

肯定可以,头文件中声明更常用...
 楼主| Jinss 发表于 2014-9-10 17:21 | 显示全部楼层
ningling_21 发表于 2014-9-10 17:18
肯定可以,头文件中声明更常用...

前辈能举个具体的例子吗?小弟谢谢了。
 楼主| Jinss 发表于 2014-9-10 17:23 | 显示全部楼层
wangch_sh 发表于 2014-9-10 17:11
你可以试一试。我都是在C文件中声明的。

我在头文件中用过普通的char变量,我在声明前面加了static,加其他的关键字好像不行。字符数组用这个办法不行。
wangch_sh 发表于 2014-9-10 17:29 | 显示全部楼层
我试过了,可以的。你提示什么错误?是不是空间溢出了?或者说明你是怎么声明的。
 楼主| Jinss 发表于 2014-9-10 17:39 | 显示全部楼层
multiple definition of……
 楼主| Jinss 发表于 2014-9-10 17:41 | 显示全部楼层
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  STATE1DATA
wangch_sh 发表于 2014-9-10 17:42 | 显示全部楼层
加extern了吗?声明了一次还是多次?如果声明了多次,要用条件编译语句,确保只编译一次。
 楼主| Jinss 发表于 2014-9-10 17:43 | 显示全部楼层
这是在头文件中:
extern unsigned char state1data[7]={"STATE1"};
在C文件中:
unsigned char state1data[7];
 楼主| Jinss 发表于 2014-9-10 17:45 | 显示全部楼层
或者这样:
头文件:
unsigned char state1data[7]={"STATE1"};
C文件:
extern unsigned char state1data[7];
 楼主| Jinss 发表于 2014-9-10 17:47 | 显示全部楼层
前辈条件编译怎么操作呀?
 楼主| Jinss 发表于 2014-9-10 17:50 | 显示全部楼层
刚才也试了一下:static在头文件中用没有问题。extern 不行。
wangch_sh 发表于 2014-9-10 17:51 | 显示全部楼层
我试的没问题呀!
你第一种肯定不行,要在定义的时候初始化。
对于第二种情况:
是不是这样:你在第一个头文件里定义,在第一个C文件里声明。
如果是这样的话,就没必要了。
你只需要在其他C文件对应的头文件里声明就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部