请考虑以下代码
module t_test
implicit none
type ttt(tsize)
integer, len :: tsize
real x(tsize)
end type ttt
type :: t_rndom_diameter(t_rsize,t_csize)
integer, len :: t_rsize,t_csize
real :: x(t_rsize,t_csize)
type(ttt(tsize=:)), allocatable :: test_type
end type t_rndom_diameter
end module t_test
program p_test
USE t_test
implicit none
type(t_rndom_diameter(t_rsize=3,t_csize=3)) :: gdad
allocate(gdad% ttt(tsize=10) :: gdad % test_type)
end program
它给了我一个灾难性的错误,但没有提到错误是什么:
catastrophic error: **Internal compiler error: segmentation violation signal raised** Please
report this error along with the circumstances in which it occurred in a Software Problem
Report. Note: File and line given may not be explicit cause of this error.
但是,我知道是什么触发了这个错误,即:allocate(gdad%ttt(tsize = 10):: gdad%test_type)
这是什么意思?
我也试过没有gdad,即分配(gdad%ttt(tsize = 10):: test_type)
最佳答案 像往常一样,“内部编译器错误”与编译器中的错误有关.这是向编译器供应商报告的内容.
但是,在这种情况下,它将是一个低优先级问题:您尝试编译的代码无效.如上所述,有问题的路线是
allocate(gdad% ttt(tsize=10) :: gdad % test_type)
这是无效的,因为这种形式的allocate语句需要左侧的类型说明符. gdad%ttt(10)不是这样的事情.正确的陈述是
allocate(ttt(tsize=10) :: gdad % test_type)