nesC语言命名到C语言命名的映射

2008-02-23 05:33:31来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

nesC语言命名到C语言命名的映射

所谓nesC语言命名到C语言命名的映射,是指把nesC编译成C时nesC中的变量、函数名和
产生的C文档中变量、函数名的对应关系。在Blink中这种映射就是指把Blink的接口、组件、
C文档中的变量连同函数名和ncc编译成app.c后对应的变量\函数名之间的映射.
应用中用到的C文档中包含的类型,变量,函数名字在ncc的处理过程中保持不变.假如C文档
出现了和nesC的关键字相同的变量,则在编译时自动在该变量前加上前缀_nesC_keyword_.
比如C文档中定义了一个变量compantents,编译时将该变量映射成nesC_keyword_compantents.
具体的映射关系如下:
(1)模块M中的变量X映射成M$X;
(2)模块M中的函数F映射成M$F;
(3)模块M中的命令或事件C映射成M$C;
(4)模块M中的接口I的命令或事件被映射成M$I$C.

例如: 在组件HPLInit 中有以下代码
command result_t init(){
TOSH_SET_PIN_DIRECTIONS();
return SUCCESS;}
对应的C代码如下:
static inline result_t HPLInit$init(void){
TOSH_SET_PIN_DIRECTIONS();
return SUCCESS;}
关于static inline的说明如下:
module RealMain {
uses {
command result_t hardwareInit();
interface StdControl;
interface Pot;
}
}
implementation
{
int main() __attribute__ ((C, spontaneous)) {
/********************************************
//关于_attribute_((C,spontaneous))的说明
/***nesC主要支持以下三种属性.
/*(1)C: 该属性用于C声明中 或模块顶层配件文档中的定义d,使其能够出现在
/* 全局域内,而不是该模块所在的域内.如RealMain模块所示:
/* int main() __attribute__ ((C, spontaneous))
/*
/*(2)spontaneous: 该属性能够用于任何函数f(无论是在模块中还是在C代码中),
/* 表示该函数f能够在其他文档中被访问,而不但仅限于本文档。
/*上面的main()文档就表示能够被其他文档访问.实际上NCC在编译生成C语言程式
/*的时候,假如函数没有声明spontaneous属性的话,就在该函数前加上static.如下:
/* int main() __attribute__ ((C, spontaneous)) 编译成 int main(void)
/* void TOSH_sched_init(void) 编译成 static inline void TOSH_sched_init(void)
/*
/*(3)combine(fnname): 该属性指定typedef中定义的数据类型的组合函数.改组合函数
/* 指明了如何组合命令和事件.如:
/* typedef uint8_t result_t _attribute_((combine(recombine)));
/* result_t recomnine(result_t r1,result_t r2)
/* {
/* return ( r1 == FAIL) ? FAIL: r2;
/* }
************************************************/

call hardwareInit();//调用硬件初始化函数。
call Pot.init(10);//调用初始化典雅的值为10。
TOSH_sched_init();//初始化调度器数据结构的值,主要是队列的头指针和尾指针

call StdControl.init();
//调用StdControl接口中的命令init()完成特定的初始化
//具体的初始化在Blink中指定

call StdControl.start();//调用StdControl接口中的命令start(),具体在BLink中指定
__nesc_enable_interrupt();//开中断

while(1) {//从以下的任务队列中取出任务执行
TOSH_run_task();
}
}
}




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Cc 基础知识,面试常见问题

下一篇: C语言习题练习

热门词条
热门标签