我尝试构建以下代码:
FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_frame);
getLayoutInflater().inflate(R.layout.activity_home, contentFrameLayout);
这会导致错误:
显式形状数组的错误数组规范。
我试着反过来做这件事:
integer, parameter :: N = 2
real, dimension(1:N,:), allocatable :: ArrayA
这一次,错误如下:
延迟形状数组
的规范不正确
我的问题是双重的:
为什么这两种情况会导致不同的错误?如何声明一个可在一个方向上分配但在另一个方向上固定的2D数组?
答案 0 :(得分:2)
为什么这两种情况会导致不同的错误?
我希望它是因为编译器从左到右读取行。所以当它到来时
real, dimension(1:N,:), allocatable :: ArrayA
它读了这么多
real, dimension(1:N,
并且看到它正在读取明确形状的数组的声明,然后读取:
并抱怨。
同样,阅读时
real, dimension(:,1:N), allocatable :: ArrayA
它会看到它确定为延迟形状数组
的声明real, dimension(:,
并期待另一个:
。
如何声明可在一个方向上分配的2D数组 固定在另一个?
编辑:经过OP的进一步评论
这有什么问题?
integer, parameter :: N = 2
integer :: m
real, dimension(:,:), allocatable :: arrayA
...
! get a value for m
allocate(arrayA(m,N))