Sea*_*gan 0 fortran gfortran pgi
在使用gfortran(mpif90)编译Fortran程序时,遇到以下错误:
Error: Cannot assign to INTENT (IN) variable 'x' at (1)
make[2]: [module.o] Error 1 (ignored)
Run Code Online (Sandbox Code Playgroud)
当我用PGI编译这个程序时,我没有收到这个错误.
我有两个问题.
任何建议,将不胜感激.
如果您向我们展示了代码,这可能不仅仅是猜测,而是在这里......
你有一个程序,一个函数或一个子程序,如
integer function my_func(x)
real, intent(in) :: x
...
x = a_value
my_func = 2
end function my_func
Run Code Online (Sandbox Code Playgroud)
该语句real, intent(in) :: x告诉编译器该函数不会尝试更改参数x.然后,bang,in x = a_value,函数继续向前并试图改变论证.
编译器的这种行为对安全编程有很大的帮助,如果PGI编译器在遇到这样的代码时确实没有引起错误,那么(a)它是错误的,标准要求它应该和(b)你不应该使用不安全的编译器.
其他编译器提出这个错误是非常正确的,即使我知道一种告诉编译器的方法,我也不会与你分享.这就像教你如何从培根切片机上取下保护罩一样.
现在,向我们展示您的代码,我们中的一个可以给您一个正确的诊断.