如题,为了便于调试,想把一段字符转二进制比特的代码写成函数调用。主要代码如下(行号是为了阅读说明方便添加的,跟实际程序中略有出入):
主函数:
1 INT16U CharToBin(INT16U RxMsg);
2 INT16U BitBuf[8];
3 *BitBuf = CharToBin(RxDat); //RxDat为之前收到的字符
子函数
4 INT16U* CharToBin(INT16U RxMsg){
5 INT16U BitTmp[8], BitNum;
6 INT16U tmp = RxMsg;
7 for(BitNum = 0;BitNum < 8;BitNum++){
8 tmp = tmp/2;
9 BitTmp[8-BitNum-1] = tmp;
}
10 return BitTmp;
}
问题:
1 我仔细查看了原程序,基本都是返回数值或字符,没有见返回数组的实例。请问这样返回BitTmp首地址传给主函数BitBuf是否正确?(主要是各个“*”号的位置是否正确。。基础不好。。)
2 编译时会有报错:Error: #148 declaration is incompatible with "INT16U CharToBin(INT16U)" (declared at line 1).
双击报错Description,会定位至第4行(行号前有红叉)。我查了网上说是没有在调用函数之前定义函数,所以特意加了第1行定义,但是仍有这个报错,不知如何解决。 在没有加第1行的情况下,编译会报错:Error: #161 declaration is incompatible with previous "INT16U CharToBin" (declared at line 3).
3 第3行有warning: <a href ="file:…/TI/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function "CharToBin" declared implicitly.
4 第10行有warning: #1132-D returning pointer to local variable.
如何才能通过编译,正确执行呢?学了有两个月uCOSII和OMAP-L138了,越来越有兴趣,请大神解惑!您的任何回答都会对我莫大帮助,谢谢!
Shine:
uCOSII的移植可以和下面这位客户多交流。https://www.deyisupport.com/question_answer/dsp_arm/omap_l1x/f/54/t/21649.aspx