【发布时间】:2015-11-18 11:35:07
【问题描述】:
我在 Fortran 中使用了一个 API,它提供了一个写入数据的例程。假设它的名字是api_write_data。此例程需要一个数组作为参数,其维度可以是 1、2 或 3。
我想编写一个子例程,作为这个 API 例程的包装器。但因此我有必要编写一个可以处理 1D、2D 或 3D 数组的例程,并且可以正确地将它们传递给 API 例程。我怎样才能做到这一点?我可以这样做吗?
我的方法是这样的,但它不起作用:
subroutine write_data(array)
implicit none
integer, dimension(:,:,:), intent(in):: array
call api_write_data(array)
end subroutine write_data
但是,当我使用例如一维数组调用此例程时,我得到了已知错误:
Error: Rank mismatch in argument 'array' at (1) (rank-3 and rank-1)
有没有办法在 Fortran 中做这种事情?对我来说,有必要将 Array 作为 1D、2D 或 3D 数组传递给 write_data 例程。但是,我可以将数组作为一维数组传递给api_write_data。
你知道我该怎么做吗?
【问题讨论】:
标签: arrays multidimensional-array fortran subroutine