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
Compilation 使用GFortran在同一文件中编译模块和主程序?_Compilation_Fortran_Gfortran - Fatal编程技术网

Compilation 使用GFortran在同一文件中编译模块和主程序?

Compilation 使用GFortran在同一文件中编译模块和主程序?,compilation,fortran,gfortran,Compilation,Fortran,Gfortran,我是fortran新手,我正在尝试运行一个fortran 90程序,其中模块和main位于同一个名为main.f90的文件中: module real_precision implicit none integer, parameter :: sp = selected_real_kind(1) integer, parameter :: dp = selected_real_kind(15) end module real_precision program ma

我是fortran新手,我正在尝试运行一个fortran 90程序,其中模块和main位于同一个名为main.f90的文件中:

module real_precision
    implicit none

    integer, parameter :: sp = selected_real_kind(1)
    integer, parameter :: dp = selected_real_kind(15)

end module real_precision

program main_program

    use real_precision

    implicit none

    real(sp) :: a = 1.0_sp
    real(dp) :: b = 1.0_dp

    print *, a
    print *, b

end program main_program
我曾经编译过它,做过:

gfortran main.f90 -o main.x
然后运行它:

./main.x
然而,我对模块进行了更改并保存了它,但是以相同的方式编译和运行它会提供相同的输出,这让我认为需要编译模块?在同一个文件中,如何编译这两个文件?我可以使模块成为一个单独的文件,但我想知道如何做到这一点

selected\u real\u kind(p)
返回实数的种类参数,精度至少为
p
位(如果存在)。它没有给出一个精确到那种精度的实数的种类参数


如果您的编译器没有精度小于
q
的实数,则
所选实数(q)
所选实数(q-1)
将不会返回不同的种类参数。

在主程序中有一个模块有点奇怪,但可以。即使只更改了模块中的某些内容,也可以编译该文件。您更改了什么,为什么认为它不起作用,您使用了哪个编译命令?gfortran的哪个版本?@albert我只是在玩fortran,我只是把这行代码改成了:integer,parameter::sp=selected\u real\u kind(6)到integer,parameter::sp=selected\u real\u kind(3)。将6更改为3。当我编译并运行它时,我期望它输出3个有效数字,而不是6个?但它只是输出完全相同的东西。也许我理解错了。我正在使用gfortran的9.1.0版!如果您想知道所选真实种类(k)的可能值,您可以使用循环并打印这些值,或者在
iso\u fortran\u env
模块中使用常量数组
真实种类
。在普通的个人计算机上,您应该获得两个或三个不同的值(32位IEEE 754、64位IEEE 754,以及基于128位IEEE 754或“”编码的扩展精度,或者可能是x86上的10字节实数)。