首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符元素函数给一个参数作为字符长度的接口?

字符元素函数给一个参数作为字符长度的接口?
EN

Stack Overflow用户
提问于 2016-07-10 13:28:01
回答 1查看 41关注 0票数 0

问题是,当我将integer integer作为字符元素函数的长度定义传递给它时,为什么我会错误地说它是一个real。更确切地说,折叠MWE可以工作。

代码语言:javascript
复制
program chararr
implicit none
!!
integer,parameter :: charlen = 20
!!
interface
character(len=20) elemental function adjR(a)
character(len=*),intent(in) :: a
end function
end interface 
!!
character(charlen) :: test(3), testR(3)

test = ["hej", "hoj", "haj"]
testR = adjR(test)

print*, test
print*, testR

end program 

character(20) elemental function adjR(a)
character(len=*),intent(in) :: a
adjR = adjustr(a)
end function

但是行integer,parameter :: charlen = 20什么也不做。当我像这样更改函数和接口定义时

代码语言:javascript
复制
character(len=charlen) elemental function adjR(a)

我得到以下错误:

代码语言:javascript
复制
charmin.f90:7:14:

 character(len=charlen) elemental function adjR(a)
              1
Error: Expression at (1) must be of INTEGER type, found REAL

更新

Alexander的解决方案是在代码中:

charmin.f90:

代码语言:javascript
复制
program chararr
use char_mod, only: charlen, adjR
implicit none
!!
!interface
!character(30) elemental function adjR(a)
!character(len=*),intent(in) :: a
!end function
!end interface 
!!!
character(charlen) :: test(3), testR(3)

test = ["hej", "hoj", "haj"]
testR = adjR(test)


print*, test
print*, testR
print*, charlen !!! it is here
end program 

char_mod.f90:

代码语言:javascript
复制
module char_mod

implicit none
integer,parameter :: charlen = 30

private
public charlen, adjR

contains

character(charlen) elemental function adjR(a)
implicit none
character(len=*),intent(in) :: a
adjR = adjustr(a)
end function

end module

汇编:

代码语言:javascript
复制
gfortran -c char_mod.f90 
gfortran charmin.f90 char_mod.f90 -o program
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-10 13:33:05

charlen是在程序的作用域中定义的,但是函数adjR不在该范围之内。因此,charlen是不可访问的,而且由于函数没有定义implicit none,所以它被解释为一个真正的变量。

解决方案之一是将adjR放在模块中,并使charlen成为模块变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38292389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档