打印

重开一贴,不想把问题留到明年,请所长及朋友们都来帮忙

[复制链接]
1909|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
有梦就去追|  楼主 | 2007-12-30 22:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1: maqingnian 发表于 2006-8-10 16:08 侃单片机 ←返回版面    

209楼: 回复clownabcd 

我也有你的疑问。根据所长的注释,我觉得应该是这样的。
extern void Memory_Init(unsigned char *pRamPara)
Memory.c里
void Memory_Init(unsigned char *pRamPara)
{
    pRamEnd=pRamPara;
}   是这样么?
2:unsigned char idata *Memory(unsigned char mSize)
{
    pRamEnd-=mSize;
    return pRamEnd;
}
这里是在每个模块中都对内存进行分配的么?mSize还要自己计算的么?
3:前面有个enmu MSG_HEAD{.....eMSG_End,}
后面 三InMsg.aMessage_Function=(void*)Memory_Malloc(sizeof(void*)*eMSG_End));
void*是转换为空类型的指针,这里的*eMSG_End如何理解?该句应该是分配给eMSG_End所占字节数的内存么?
4:struct InMsg{void (**aMessage_Function)(),}
(*aMessage_Function)()是函数指针,但是这里两个* 号是什么意思?

相关帖子

沙发
zusen| | 2007-12-30 23:04 | 只看该作者

把这条问题

从2007研究到2008,哈哈

使用特权

评论回复
板凳
古道热肠| | 2008-1-3 11:01 | 只看该作者

哈哈,所长的东东,所长最熟,还请所来来答疑

第4个问题,我的理解是应该是由**构成函数指针数组。如同一个*指向字符串,二个**指向字符串数组。

4:struct InMsg{void (**aMessage_Function)(),}
(*aMessage_Function)()是函数指针,但是这里两个* 号是什么意思?

使用特权

评论回复
地板
农民讲习所| | 2008-1-3 11:17 | 只看该作者

1)this.pRamEnd=pRamPara;
 或者:sInMemory.pRamEnd=pRamPara;

2)mSize自己计算。通常使用sizeof(xxx)得到。分配的变量是需要初始化中产生的模块全局变量,不是所有变量。

3)sizeof(void*)*eMSG_End,是乘法,不是指针

4)**aMessage_Function,你可以简单理解为指向函数指针数组的指针*aMessage_Function[]。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

37

帖子

0

粉丝