0
編譯簡單Fortran程序時,我有一個簡單的Fortran 95程序「PROCEDURE屬性與INTENT屬性衝突」與模塊
include "sandboxlib.f95"
program sandbox
implicit none
write(*, *) 'abc'
end program
和含有功能
module sandboxlib
integer, parameter :: dp = kind(1.d0)
contains
function cumsum(mat, m, n) result(c)
implicit none
real(dp), intent(in) :: mat
integer, intent(in) :: m, n
integer i, j
real(dp), dimension(m, n) :: c
c(:, 1) = 0.d0
do i = 2, m
do j = 1, n
c(i, j) = c(i-1, j) + mat(i, j)
end do
end do
end function
end module
我編譯sandbox.f95
與單模此命令
/usr/bin/gfortran -O -std=gnu -Wfatal-errors -pedantic -Wall sandbox.f95 -o sandbox
其中導致此錯誤
sandboxlib.f95:6.23:
Included at sandbox.f95:1:
function cumsum(mat, m, n)
1
Error: PROCEDURE attribute conflicts with INTENT attribute in 'mat' at (1)
我環顧四周,發現一個fewquestions是討論的模塊,功能等,或者類似這樣的錯誤,但我不明白,爲什麼這不會編譯。
啊,謝謝你的幫助。 'mat(m,n)'修復錯誤。但是,如果我使用'mat(:, :))',因此不會傳入'm'和'n',我仍然需要計算函數內的維數,對?否則'do'循環將不起作用? –
@MichaelA你是對的,你必須。檢查'size()'和'lbound()'和'ubound()'。有時候這些大小可能是全局(模塊)變量,在這種情況下分享它是有意義的。 –