Chinaunix

标题: 谁了解这情况,keil4环境下自定义strcmp()的返回值似乎和VC不一样 [打印本页]

作者: Constantine_X    时间: 2013-06-10 22:55
标题: 谁了解这情况,keil4环境下自定义strcmp()的返回值似乎和VC不一样
本帖最后由 Constantine_X 于 2013-06-10 22:59 编辑

以下是我程序片断截取:

我的字符串比较函数这样定义:
int strcmp(const char * src,const char * dst)
{
  int ret = 0 ;
  while( ! (ret = *(unsigned char*)src - *(unsigned char*)dst) && *dst && *src)
    ++src, ++dst;
  if ( ret < 0 )
    ret = -1 ;
  else if ( ret > 0 )
    ret = 1 ;
  return( ret );
}

这两个字符串显然是不相等:
char buffer[10] = "ledo";
char command_1[]= "ledon";

但下面这个if语句却总能执行 led_switch = 1;
if( strcmp(buffer,command_1) == 0 )
{
  led_switch =1;
}

在VC中调用和上面定义相同的strcmp()函数,比较buffer和command却能得到正确的结果.

求分析....




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2