一个问题,是picc的问题还是我的问题?

2020-02-09 09:20发布

先把编译环境交代一下:MPLAB8.6+picc8.05
以下是我发现的问题:
1
#include "pic16f716.h"
unsigned char KeyValue=1;
void send_ir(unsigned int Data)
{
}

void main(void)
{
        while(1)
        {
                switch (KeyValue)
                {
                        case 1:send_ir(1);break;       
                        case 2:send_ir(1);break;
                        case 3:send_ir(1);break;
                        case 4:send_ir(1);break;
                        case 5:send_ir(1);break;
                        default:break;
                }
        }
}
(1)这个时候编译出现:Error[000]  0 : Refc == 0 in decref错误!
(2)而后我把void send_ir(unsigned int Data)改成void send_ir(unsigned char Data),编译通过了(int->char)
(3)或者,我把switch语句中的任意3个case给注释掉,编译也能通过;
2、我把程序改写成如下形式,编译也能通过:(switch放在一个函数里)
#include "pic16f716.h"
unsigned char KeyValue=1;
void send_ir(unsigned int Data)
{
}

void test()
{
        switch (KeyValue)
        {
                case 1:send_ir(1);break;       
                case 2:send_ir(1);break;
                case 3:send_ir(1);break;
                case 4:send_ir(1);break;
                case 5:send_ir(1);break;
                default:break;
        }
}

void main(void)
{
        while(1)
        {
                test();
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。