keil MDK中一个很奇怪的问题

[复制链接]
8329|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 *的指针。
rasar21ic 发表于 2009-8-17 14:49 | 显示全部楼层
caizhiwei 发表于 2014-5-15 16:24 | 显示全部楼层
"POST /home.asp HTTP/1.1" 包含两个未识别的转义字符
bkn1860 发表于 2014-5-15 17:25 | 显示全部楼层
len  =  strlen ((char)p);  
zchong 发表于 2014-5-17 14:27 | 显示全部楼层
,类型不匹配尔
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

65

帖子

0

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