首页 理论教育 属性attributes的使用方法和注意事项

属性attributes的使用方法和注意事项

时间:2026-01-23 理论教育 小霍霍 版权反馈
【摘要】:属性是将元数据与程序语句关联的一种方式。nesC的属性基于Java注释中采取的方法。前面已经接触了属性@combine。例3.40:这个例子声明了atleastonce属性,该属性中没有域。配件LedsC使用这个属性注释其接口Init。默认情况下,@atleastonce什么都不做。属性没有引入新的关键字提供了扩展nesC语言的方式。@atomic_hwevent:表明函数是中断调用的结果,且函数运行具有原子性。在本属性与@hwevent的区分是必需的,这样nesC可以知道是否需要额外的原子语句。@integer:表明通用组件类型参数必须是整数。

属性(attributes)是将元数据与程序语句关联的一种方式。nesC的属性基于Java注释中采取的方法。这里主要介绍最常用的属性及如何使用这些属性,完整的细节不再详述。

属性声明是指一个数据结构名字前有“@”的声明。属性具有域,域可以被初始化。前面已经接触了属性@combine。

组合属性将字符串作为参数,error_t的声明由ecombine来注释,指定了error_t的组合函数名字。圆括号中的参数实际使用了与C初始化属性定义相同的语法。

用户定义的属性可以附加到nesC程序中的大多数名字(组件、接口、tepedef、变量和函数等)上。

例3.40

这个例子声明了atleastonce属性,该属性中没有域。配件LedsC使用这个属性注释其接口Init。默认情况下,@atleastonce什么都不做。但是nesC编译器具有工具可以将应用的信息输出,包括属性信息。TinyOS编译过程中有一部分工作是运行一个脚本,检查连接限制,atleastonce是其中之一。编译中检查有atleastonce注释的接口被连接至少一次。

属性没有引入新的关键字提供了扩展nesC语言的方式。目前系统中的通用属性包括如下几项。

@spontaneous:表明函数可以从nesC程序外部调用,因此,由nesC死代码删除中不应该剪除这个函数。一般在中断处理程序或者连接二进制库(比如,TOSSIM)时要使用该属性。

@C:表明函数为C函数,而不是nesC函数。特殊的,使用该属性定义的函数不是组件内部私有的函数。在C代码需要调用nesC代码时使用该属性。该属性隐含@spontaneous。(https://www.xing528.com)

@hwevent:表明函数是硬件中断调用的结果。

@atomic_hwevent:表明函数是中断调用的结果,且函数运行具有原子性。该属性隐含@spontaneous。在本属性与@hwevent的区分是必需的,这样nesC可以知道是否需要额外的原子语句。

@atmostonce:表明接口必须连接0或1次;

@atleastonce:表明接口必须连接1或多次;

@exactlyonce:表明接口必须连接1次,不能多也不能少。

@integer:表明通用组件类型参数必须是整数。这个属性允许通用组件对该类型参数使用整数操作。

@number:表明通用组件类型参数必须是整数或者浮点类型。该属性允许通用组件对该类型参数使用算术操作。

@combine:声明类型时,用于指定类型的组合函数。它有1个参数,即组合函数名字的字符串。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈