获取未实例化的用户定义数据类型的数组大小

Get size of array in uninstantiated user-defined data type

说下面的模块给我,我不能编辑:

module somemod
  type somestruct
    character(40) somestr
  end type
end module

我在这段代码中使用了它:

program myprog
  use somemod

  implicit none

  character(size(somestruct%somestr)) localstr   !Is this possible?
end program

是否有语法完成标记行试图做的事情?也就是说,我可以在不实例化数据结构的情况下获取用户自定义数据结构中数组的大小吗?

首先,

character(40) somestr

不是数组,是长度为40的字符串

差别很大,不是吹毛求疵。您使用数组和字符串的方式不同。有关更多信息,请参阅

字符串的长度由内部函数len()查询。

但不幸的是,如果不首先拥有该类型的变量(实例),则不能在派生类型的组件上调用它。

所以你需要

program myprog
  use somemod

  implicit none

  type(somestruct) :: o
  character(len(o%somestr)) localstr   !This is possible.
end program

如果您需要数组组件的大小,它会是相同的,但使用 size() 内部函数。