首页 > 教程 > 正文

阅读排行

关于 encompassing scoping unit Error 错误
2014-05-22 17:07:35   来源:Fcode研讨团队   评论:0 点击:

本文描述了 Error: The name of the module procedure conflicts with a name in the encompassing scoping unit 产生的原因,即修改建议。

问题:Error: The name of the module procedure conflicts with  a name in the encompassing scoping unit.   [CONST]


function se(x) 
  implicit none
  integer n
  real x,h,he,tx,se
  n=1
  tx=h(n)*x**(2*n)
  he=tx
  do while(abs(tx)>=1e-10)
    n=n+1
    tx=h(n)*x**(2*n)
    he=he+tx
  enddo
  se=1+he

 CONTAINS
 
  function h(n) result(k)
    implicit none
    integer i,n
    real pim,term1,term2,e,s,k
    pim=(2/3.1415926)**(2*n+1)
    term1=1
    term2=1
    e=term1/term2
    s=1
    i=1
    do while(abs(e)>=1e-10)
      i=i+1
      term1=(-1.0)**(real(i)-1)
      term2=(2*real(i)-1)**(2*n+1)
      e=term1/term2
      s=s+e
    enddo
    k=2*pim*s
  end function h
end function se

program www_fcode_cn
  implicit none
  real se,h,x
  read*,x
  print*,se(x)
end program www_fcode_cn

这个程序是错的,,出错是因为:contains里面的函数h的scoping unit定义跟主函数有冲突。

real x,h,he,tx,se,这样编译器会认为h是external的,但加上contains却又认为是internal的

有两种改法:
1,去掉声明中的h;
2,将end  function se 替换掉contains,,写成2个独立的函数。

相关热词搜索:encompassing scoping unit error

上一篇:用二进制直接存取方式更新文件时需注意的细节
下一篇:为什么要在数学函数前面加D,加C加Q?如dsin

分享到: 收藏