我正在尝试创建一个接受数字并返回该数字的字符串表示形式的函数。这是我尝试过的:
program test
print *, num2str(9.0)
end
character(len=128) function num2str(num)
real num
write(num2str,*) num
endfunction
但是这会返回错误:
num2str.f:1.22:
print *, num2str(9.0)
1
Error: Return type mismatch of function 'num2str' at (1) (INTEGER(4)/CHARACTER(1))
我该如何解决这个问题?
与子例程不同,您需要在program
范围内导入或声明函数接口。
选项1
明确声明接口:
program test
interface
character(len=128) function num2str(num)
real num
end function num2str
end interface
print *, num2str(9.0)
end
character(len=128) function num2str(num)
real num
write(num2str,*) num
endfunction
选项2
将函数放入程序contains
部分,该部分将自动生成接口:
program test
print *, num2str(9.0)
contains
character(len=128) function num2str(num)
real num
write(num2str,*) num
endfunction
end
选项3
在模块内部定义功能,并将该模块导入program test
:
module m
contains
character(len=128) function num2str(num)
real num
write(num2str,*) num
endfunction num2str
end module m
program test
use m
print *, num2str(9.0)
end