TI中文支持网
TI专业的中文技术问题搜集分享网站

关于子函数如何返回数组和编译问题

如题,为了便于调试,想把一段字符转二进制比特的代码写成函数调用。主要代码如下(行号是为了阅读说明方便添加的,跟实际程序中略有出入):

主函数:

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 

赞(0)
未经允许不得转载:TI中文支持网 » 关于子函数如何返回数组和编译问题
分享到: 更多 (0)