+ -
当前位置:首页 → 问答吧 → 大伙帮我看看这段代码错在哪里,TC 3.0编译通不过,谢谢

大伙帮我看看这段代码错在哪里,TC 3.0编译通不过,谢谢

时间:2010-08-07

来源:互联网

#include "stdio.h"
main()
{
    unsigned char buf[] = "ABCDEFGH12345678";
    unsigned char len = 16;
    unsigned int retu_crc;
    retu_crc = calcrc(buf, len);

}

unsigned int calcrc(unsigned char buf[],unsigned char len)
{
const unsigned int crc_gen = 0xa001;
unsigned int crc;
unsigned char i,j;

crc = 0xffff;
if (len != 0)
{
  for(i = 0;i < len;i++)
  {
   crc ^= (unsigned int)(buf[i]);
   for(j = 0;j < 8;j++)
   {
    if (crc & 0x01)
    {
     crc >>= 1;
     crc ^= crc_gen;
    }
    else
     crc >>= 1;
   }
  }
}

return crc;
}

作者: swallowcn   发布时间: 2010-08-07

函数在使用前需要声明,TC编译器有点过时
  1. #include <stdio.h>

  2. unsigned int calcrc(unsigned char buf[],unsigned char len);

  3. main()
  4. {
  5.     unsigned char buf[] = "ABCDEFGH12345678";
  6.     unsigned char len = 16;
  7.     unsigned int retu_crc;
  8.     retu_crc = calcrc(buf, len);

  9. }

  10. unsigned int calcrc(unsigned char buf[],unsigned char len)
  11. {
  12.     const unsigned int crc_gen = 0xa001;
  13.     unsigned int crc;
  14.     unsigned char i,j;

  15.     crc = 0xffff;
  16.     if (len != 0)
  17.     {
  18.           for(i = 0;i < len;i++)
  19.          {
  20.             crc ^= (unsigned int)(buf[i]);
  21.             for(j = 0;j < 8;j++)
  22.            {
  23.                if (crc & 0x01)
  24.               {
  25.                crc >>= 1;
  26.                crc ^= crc_gen;
  27.               }
  28.                 else
  29.                  crc >>= 1;
  30.                 }
  31.             }
  32.          }

  33.     return crc;
  34. }
复制代码

作者: north423   发布时间: 2010-08-08

声明了还是不行,老大,怎么回事

作者: swallowcn   发布时间: 2010-08-08

哎呀,我擦,好久没用过TC了,好费劲啊,warning不给通过编译啊,检查好详细,楼主最好能把错误贴出来,问题描述清楚。
'retu_crc 'is assigned a value that is never used
1 retu_crc被赋值但是没有被使用---警告
2 main函数无返回值---警告

解决方法:main函数最后增加两行
printf("%u\n",retu_crc); //使用retu_crc
return;

TC好难用,

作者: north423   发布时间: 2010-08-08