Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function fortran语言中的函数_Function_Fortran_Gfortran - Fatal编程技术网

Function fortran语言中的函数

Function fortran语言中的函数,function,fortran,gfortran,Function,Fortran,Gfortran,我对用fortran编程完全是新手。。。。。我试着做一个函数,这个函数在另一个程序中调用 我有我的主程序,叫做Spectrum.f: program Spectrum external I_Analytic double precision I_Analytic write(*,*) I_Analytic(5.D0) end 函数I_analysis在第二个文档(称为analysis.f)中定义: DOUBL

我对用fortran编程完全是新手。。。。。我试着做一个函数,这个函数在另一个程序中调用

我有我的主程序,叫做Spectrum.f:

      program Spectrum

       external I_Analytic
       double precision I_Analytic

       write(*,*) I_Analytic(5.D0)

      end
函数I_analysis在第二个文档(称为analysis.f)中定义:

       DOUBLE PRECISION function I_Analytic(w1)

        I_Analytic = w1**2

       end function I_Analytic
在用 gfortran-o频谱分析.f频谱.f


我只得到0.0000000000而不是25…我的程序怎么了?

您的函数没有声明
w1
的类型,因此根据隐式键入规则,它是
实数
,而不是
双精度
。正如我在评论中所建议的,始终使用
隐式无
,如果接口不一致,最好也使用模块来获取错误。

在此阶段不要学习
外部
。直接学习模块。这是我在课堂上使用的正确方法。此外,请使用免费源代码表单。在所有独立单元中使用
IMPLICIT NONE
(非常重要!),并学习种类,而不是
double-precision
@KobeGote我认为你不应该删除你的答案,它是正确的,两个答案也没有坏处。你甚至比我快一点。但很有可能,我们会找到一个重复的答案,我也可能会删除我的答案。