打印

keil MDK中一个很奇怪的问题

[复制链接]
6494|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
red1986|  楼主 | 2009-8-12 22:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
keil, MDK, ST, ui, ge
len =  strlen (p);  strlen 函数大家一定用过,
晚上我写程序的时候发现一个问题:
我定义了,
uint8 test[] =  "POST /home.asp HTTP/1.1"  ;
const char *p = "zheshi yige ceshi "  ;

这样两个数组 ,然后
  void  GetWebHead (uint8 *in_webdat)
  {
uint32 i = 0,j = 0;
uint8 dtl [10];
uint32 len = 0,len1 = 0;
len  =  strlen (p);  
len1 = strlen (test);   
/***代码****/



编译的时候 红色字段有问题,有警告
myHTTPD\myhttpd.c(21): warning:  #167-D: argument of type "uint8 *" is incompatible with parameter of type "const char *"

不知道各位高手是否与哦遇到这样的问题,要怎么处理呢,难道在MDK中strlen  不能获得字符串变量长度吗。

相关帖子

沙发
自然的天逸| | 2009-8-13 09:43 | 只看该作者
加个强制类型转换 应该就可以了 len1 = strlen ((const char*)test);

使用特权

评论回复
板凳
red1986|  楼主 | 2009-8-13 13:39 | 只看该作者

但是const 不是定义的常量类型吗,如果我牵制转换了是不值一位这 test数组就成常量了,不是很理解

使用特权

评论回复
地板
nenozyp| | 2009-8-14 18:26 | 只看该作者
strlen原型就是int strlen(const char *); uint8 定义为 unsigned char;相当于unsiged char *转化为char *。而一般作为函数的输入参数char *到const char *没有问题,所以可以认为warning是正常现象的。
  另外test数组作为参数传入就变成指针了,就是unsigned char *的指针。

使用特权

评论回复
5
rasar21ic| | 2009-8-17 14:49 | 只看该作者
路过

使用特权

评论回复
6
caizhiwei| | 2014-5-15 16:24 | 只看该作者
"POST /home.asp HTTP/1.1" 包含两个未识别的转义字符

使用特权

评论回复
7
bkn1860| | 2014-5-15 17:25 | 只看该作者
len  =  strlen ((char)p);  

使用特权

评论回复
8
zchong| | 2014-5-17 14:27 | 只看该作者
,类型不匹配尔

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

65

帖子

0

粉丝