fortran - 什么时候必须在模块中使用 CONTAINS?
问题描述
我定义了以下模块:
module data_model_2
implicit none
! -------------------
! TYPE DEFINITION
! -------------------
type :: type1_record
integer :: month
integer :: day
integer :: year
integer :: hour
integer :: minute
integer :: second
integer :: value1
integer :: value2
end type
type :: timestamp_record
integer :: year
integer :: month
integer :: day
integer :: hour
integer :: minute
integer :: second
end type
end module
我已经看到modules
应该使用该子句contains
。当模块仅包含派生类型定义时是否需要该子句?
如果是这样,它应该包括在哪里,在 ? 之后还是之前implicit none
?
如果模块还包括函数或过程,派生类型定义应该在contains
子句之前还是之后?
我很想知道这在 Fortran 95 和 Fortran 03 中是如何工作的。
解决方案
该contains
声明说下面是内部子程序或模块子程序。只有那些东西可能会出现在模块contains
的 和之间end
。
在 Fortran 2008 之前,不允许有“空包含”部分:如果您在 Fortran 90、95、2003 中没有模块子程序,那么您可能没有contains
. 在 Fortran 2008+ 中,您可能拥有它,尽管它不是必需的,但没有它们。
contains
本质上是模块中允许的最后一件事:所有不是内部/模块子程序的模块范围定义都必须在之前。一个implicit
语句必须在模块范围的早期:只有模块语句,use
并且import
(在那些支持的极少数情况下)可以在它之前。
推荐阅读
- node.js - 具有 Typescript 详细程度的节点 gRPC
- byte - 两个表的字节单位与位的幂
- python - 如何在 Python 中将数据记录在列中而不仅仅是行中?
- python - Python:布尔运算符(和,或)不返回布尔值的理由
- azure-functions - .Net 5 功能应用程序带有 Json 数据的服务总线主题触发器不起作用
- python - 想要通过来自 Coinbase API 的 Python requests 模块获得简单的比特币报价
- flask - 如何更正烧瓶休息 api 的响应格式?
- swift - 如何使用 Swift 在 SKStoreReviewController 警报中添加模糊背景?
- sql - 如何在此查询中停止乱序结果
- vue.js - 我的 vuejs 应用程序的 package.json 中的几个 eslint