keil报错(reentrant用法)

daagaoying 2009-07-03 11:28:17
源程序:#include "httpd.h"
#include "fs.h"

#include <stdio.h>
#include <string.h>

static u8_t print_stats(u8_t next) reentrant;
static u8_t file_stats(u8_t next);
static u8_t tcp_stats(u8_t next) reentrant;

cgifunction code cgitab[] = {
print_stats, /* CGI function "a" */
file_stats, /* CGI function "b" */
tcp_stats, /* CGI function "c" */
};

static u8_t
print_stats(u8_t next)reentrant
{...}

static u8_t
file_stats(u8_t next)
{...}

static u8_t
tcp_stats(u8_t next)
{...}

Build target 'Target 1'
compiling cgi.c...
CGI.C(75): warning C182: pointer to different objects
CGI.C(77): warning C182: pointer to different objects
CGI.C(182): error C231: 'tcp_stats': redefinition
Target not created

重点是:
static u8_t print_stats(u8_t next) reentrant;
static u8_t file_stats(u8_t next);
static u8_t tcp_stats(u8_t next) reentrant;部分
原来我没有添加reentrant是, keil的报警是:
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?CGI
CALLER: ?PR?_PRINT_STATS?CGI
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?CO?CGI
CALLER: ?PR?_TCP_STATS?CGI
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_ETHERDEV_DELAY_MS?ETHERDEV
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_UIP_UNLISTEN?UIP

然后我依据网上的建议添加了reentrant关键字,又有新的问题出现了。
请哪位大侠告诉我应该怎么改!不胜感激(上述程序为uIP0.9中的cgi.c文件)
...全文
1962 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2010-10-10
  • 打赏
  • 举报
回复
其实keil是说,主程序和中断程序共用了一个子程序,这是不允许的,就是说要写2个光是名不一样的程序(copy),一个用于中断,一个用于主程序。
jinshaopu 2010-10-09
  • 打赏
  • 举报
回复
reentrant 函数调用过程中发生中断 程序就跑飞了
重载之后程序可能跑飞 呵呵 难受了我一个下午 兄弟们要注意
Great_Bug 2009-07-04
  • 打赏
  • 举报
回复
你在声明的时候是这个:
static u8_t tcp_stats(u8_t next) reentrant;
你在定义的时候是这个:
static u8_t
tcp_stats(u8_t next)
{...}
它们并不是相同类型,你应该使它们一致
schlafenhamster 2009-07-03
  • 打赏
  • 举报
回复
想法去除RECURSIVE CALL。递归调用会占很多堆栈。
lbing7 2009-07-03
  • 打赏
  • 举报
回复
找了一下,LZ把声明的那些个可重入去掉看,KEIL虽没有说明丫只能用于定义,但是咱这除了这个的确没有别的说法了

呵呵

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧