考虑这个简单的程序
program main
implicit none
integer :: array(2,3) = transpose(reshape((/1,2,3,4,5,6/),(/ size(array, 2), size(array, 1) /)))
integer i,j
do i=1,2
write(*,*) array(i,:)
end do
end program main
当我使用 intel fortran 编译器(版本 13.0.0)编译时出现错误:
main.f90(4):错误 #6263:此内在函数在常量表达式中无效。[移调]
integer :: array(2,3) = transpose(reshape((/1,2,3,4,5,6/),(/ size(array, 2), size(array, 1) /)))
似乎转置不能用于常量表达式(?)。那么有没有办法在定义时初始化数组?在我的问题中,数组非常大,因此手动转置不是一种选择。