问题:我可以在Fortran90数组中使用定义为指针的指针数组吗?
type string
character, pointer :: str(:)
end type
type(string), pointer :: arr(:)
问题: 我有代码(见下文),其ifort 11.1给出了最后写段错误。其他编译器,例如gfortran 4.6.3,ifort 11.1.072,12.0.1,...,工作没有问题
您可以将代码想象成模拟python append函数。
program test
implicit none
type string
integer, pointer :: key
character, pointer :: str(:)
end type
type(string), pointer :: arr(:), tmp(:)
allocate(arr(1))
allocate(arr(1)%str(1))
arr(1)%str(1) = 'A'
write(6,*) arr(1)%str(1)
! --------------------
tmp => arr
write(6,*) tmp(1)%str(1)
! --------------------
nullify(arr)
allocate(arr(2))
arr(1)%str => tmp(1)%str
write(6,*) arr(1)%str(1)
end program
预期结果是: 甲 甲 甲
ifort 11.1给出在最后一行段故障。现在来了奇怪的事情。如果你注释掉字符串类型的整数声明,你也会在ifort 11.1中得到预期的结果。
这是编译器问题还是我使用非标准的Fortran90结构?
2012-07-10
Stano
+0
它可能是一个编译器错误,如果它适用于'11.1.072',但不适用于早期版本的'11.1'。 –
2012-07-10 08:52:41
+0
它也适用于11.0。但通常我对编译器业务的人比对自己的能力更加信任:)。 –
2012-07-10 09:13:04
+1
我总是向英特尔技术支持部门报告可疑的编译器问题(当然,当它是英特尔编译器时)。我发现它们比识别产品中的错误更好。当然,在这种情况下,他们可能会回答'是的,那是编译器版本中的一个bug,现在已经修复了。 –
2012-07-10 10:03:22