晕。。。我哪里有递归。。。

2020-01-19 19:37发布

最近在改一些以前的代码,为了提高可读性和易用性,加了点东西,KEIL的linker就告状说我递归了,我愣是没看明白,大伙儿帮我瞧瞧
warning是:
linking...
*** WARNING L13: RECURSIVE CALL TO FUNCTION
    CALLED:  ?CO?MMC_SD
    CALLER:  _GETRESPONSEERR/MMC_SD

下面是新加的内容,只是个结构,还没写完呢

code u8 response_type_list[] =
{
0       
};

typedef u8 R1;

typedef union
{
        R1        r1;
}response;

typedef  void (*PTRGetResponse)(response* );

void GetResponseErr(response* p_res);
void GetResponseR1(response* p_res);
void GetResponseR2(response* p_res);
void GetResponseR3(response* p_res);
void GetResponseR4(response* p_res);
void GetResponseR5(response* p_res);
void GetResponseR6(response* p_res);
void GetResponseR7(response* p_res);

code const PTRGetResponse PTRGetResponseList[] =
{
        &GetResponseErr,
        &GetResponseR1,
        &GetResponseR2,
        &GetResponseR3,
        &GetResponseR4,
        &GetResponseR5,
        &GetResponseR6,
        &GetResponseR7
};

//说明:
//        对于没有的命令和 reserved 的命令的响应
void GetResponseErr(response* p_res)
{
        p_res = NULL;
        DB_SendString(" Error! Undefined CMD! ");
}

void GetResponseR1(response* p_res)
{
}

void GetResponseR2(response* p_res)
{
}

void GetResponseR3(response* p_res)
{
}

void GetResponseR4(response* p_res)
{
       
}

void GetResponseR5(response* p_res)
{
       
}

void GetResponseR6(response* p_res)
{
}

void GetResponseR7(response* p_res)
{
       
}

这些代码是新添加的内容,删掉后正常
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
27条回答
Pony279
1楼-- · 2020-01-20 18:29
回复【5楼】xrr1017
db_sendstring是不是直接或间接地在中断中被调用了
不要轻易怀疑编译器,帮助文档中应该对recursive call to function 的各种情形有詳細说明
-----------------------------------------------------------------------

我检查了下代码,暂时还木有使用到中断。。。
另外,即使是中断中调用的,那也应该是
warning: multi call to ...
Pony279
2楼-- · 2020-01-20 18:58
我看了KEIL的help上的说明,说了等于没说。。。
我还是没找到

(原文件名:1.jpg)

另外上传我的代码,整个工程的代码很多,不过都是模块化的,大家帮我看看,这个工程是我专门用来开发各种底层代码的:
点击此处下载 ourdev_713650VUYINS.zip(文件大小:223K) (原文件名:Test.zip)
用的是KEIL UV4,另外编译的时候还要设置参考此帖4楼:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5090488&bbs_page_no=1&search_mode=3&search_text=Pony279&bbs_id=9999 (这设置挺有用的,居然沉了。。。)
还有,如果有人嫌参与编译的东西多,可以在工程面板里面右键,

(原文件名:2.jpg)


(原文件名:3.jpg)


代码很多,我想不会有人认真看的
usingavr
3楼-- · 2020-01-20 23:40
 精彩回答 2  元偷偷看……
Pony279
4楼-- · 2020-01-21 01:35
回复【9楼】usingavr
-----------------------------------------------------------------------
谢谢,引用2楼:
“db_sendstring(" error! undefined cmd! ");  
删掉就没warning了
可是那只不过是一个串口发送函数呀。。。
我继续晕。。。”

unreferenced可以暂时无视,因为这段代码只不过是一个框架
usingavr
5楼-- · 2020-01-21 04:22
我电脑上只有以前的uv3,重装过了,用不了。
我用keil/c51/bin/下的程序,用命令行方式把所有.c都编译了,但不知道怎么用命令行链接
Pony279
6楼-- · 2020-01-21 07:26
回复【11楼】usingavr
-----------------------------------------------------------------------

楼上真是有心了!

我的keil 4 是在这里下载的
www.mcu123.com
注_册机用以前的就行了

一周热门 更多>