Fortran 编程中的作用域、关联与定义详解
1. 全局与局部标识符
在程序中,存在全局和局部标识符的概念。由 ENTRY 语句指定的外部过程是全局名称,这就是程序单元和外部过程会出现在全局名称列表中的原因。在一个程序里,有以下规则:
- 程序单元、外部过程或公共块的名称不能与其他同类实体的名称相同,不过内部模块可以与程序单元、外部过程或公共块同名。
- 程序中的一个实体不能由多个绑定标签标识。
- 一个实体的绑定标签不能与另一个实体的绑定标签相同。
- 忽略大小写差异,绑定标签不能与其他全局实体的名称相同,除非该全局实体是内部模块。绑定标签可以与标识同一实体的全局实体名称相同。
需要注意的是,模块过程名称不是全局的。一个模块可以包含与另一个模块中的模块过程同名的模块过程,不同宿主中的内部过程也是如此。实现可以选择为这些实体分配全局标识符,如果这样做,处理器有责任确保这些标识符与外部过程、其他全局实体或彼此的标识符都不相同。这可以通过在每个这样的标识符中包含 Fortran 名称中不允许的字符,或者将这些字符与实体所在程序单元的全局名称一起使用来实现。
2. 局部标识符
局部标识符的作用域是一个作用域单元,作用域单元包括:
- 派生类型定义
- 过程接口体(不包括其中包含的任何派生类型定义和过程接口体)
- 程序单元或子程序(不包括其中包含的派生类型定义、过程接口体和子程序)
为了直观理解作用域和作用域单元的概念,可参考如下 mermaid 流程图:
g
超级会员免费看
订阅专栏 解锁全文
137

被折叠的 条评论
为什么被折叠?



