我在Fortran中使用了一個API,它提供了寫入數據的例程。假設它的名字是api_write_data
。這個例程需要數組作爲參數,該參數可以是尺寸1,2或3。將1D陣列傳遞到3D陣列
我想要寫其工作方式包裝該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中有沒有辦法做這種事情?對我而言,有必要將陣列作爲1D,2D或3D陣列傳遞給write_data
例程。但是,我可以將數組作爲1D數組傳遞給api_write_data
。
你知道我該怎麼做嗎?
對fortran90沒有限制,會不會有另一種可能性?也許有新的語言功能,也可以通過ifort和gfort編譯.f90文件 – Skyy2010