操作系统实验指导书,一个nesC应用程序有三个部份。
:一连串的C声明和定义,一组接口类型,和一组组件。
nesC应用程序命名环境构造如下:最外层的全局命名环境,包含三个命名域:一个C变量,一个用于C声明和定义的C标签命名域,和一个用于组件和接口类型的组件和接口类型命名域。
通常,C声明和定义可以在全局命名环境内部引入自己的嵌套命名域(用于函数声明和定义的函数内部代码段,等等)。
每个接口类型引入一个命名域,用于保存接口的指令或事件。
这种命名域是嵌套于全局命名环境的,所以指令和事件定义能影响全局命名环境中的C类型和标签定义。
每个组件引入二个新命名域。
规格命名域,嵌套于全局命名环境,包含一变量命名域用于存放组件规格元素。
实现命名域,嵌套于规格命名域,包含一个变量和一个标签命名域。
对于结构,作用范围变量命名域包含组件用以引用其包含组件的名字(7.1节).对于模块,作用范围保存作业,以及模块体中的C声明和定义。
这些声明,及其它可能引入自己的嵌套在作用范围内的命名域(比如函数体,代码段等等).由于这种命名域的嵌套结构,模块中的代码可以访问全局命名环境中的C声明和定义,但是不能访问其他组件中的任何声明或定义.。
构成一个nesC应用程序的C声明和定义,接口类型和组件由一个随选的装载程序决定。
nesC编译器的输入是一个单独的组件K。
nesC编译器首先装载C文件(第9.1节),然后装载组件K(9.2节)。
程序所有代码的装载是装载这两个文件的过程的一部分。
nesC编译器假定所有对函数,指令及事件的调用不以自然的属性(第10.3节)都发生被装载的代码中(例如.,没有对非自然的函数"看不见的"调用)。
在装载文件预处理的时候,nesC定义NESC符号,用于识别nesC语言和编译器版本的数字XYZ。
对于nesC,XYZ至少为110。
装载C文件,nesC组件及接口类型的过程包括定位对应的资源文件。
文件定位的机制不是本参考手册中所要讨论的。
要详细了解通用编译器是如何作业的,请阅读《thenccmanpage.》装载C文件X如果X已经被装载,就不用再做什么。
否则,就要定位并预处理文件X.h。
C宏定义(由#define和#undef)的改变会影响到所有的后面的文件预处理。
来自被预处理的文件X.h的C声明和定义会进入C全局命名环境,因而对所有的后来的C文件加工,接口类型和组件是有影响的。
2015/2/14 1:08:24
1.18MB
指导书
1