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