说给我以下模块,我不允许编辑它:
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
是否有语法完成标记线试图做的事情?也就是说,我可以在用户定义的数据结构中获取数组的大小而无需实例化数据结构吗?
答案 0 :(得分:2)
首先,
character(40) somestr
不是数组,而是长度为40的字符串。
差异很大,不仅仅是挑剔。您使用不同的数组和字符串。有关详情,请参阅Difference between "character*10 :: a" and "character :: a(10)"。
字符串的长度由内在函数len()
查询。
但遗憾的是,如果没有该类型的变量(实例),则不能在派生类型的组件上调用它。
所以你需要
program myprog
use somemod
implicit none
type(somestruct) :: o
character(len(o%somestr)) localstr !This is possible.
end program
如果您需要数组组件的大小,它将是相同的,但具有size()
内在函数。