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()'。有时候这些大小可能是全局(模块)变量,在这种情况下分享它是有意义的。 –