Compilation 使用GFortran在同一文件中编译模块和主程序?
我是fortran新手,我正在尝试运行一个fortran 90程序,其中模块和main位于同一个名为main.f90的文件中: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
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字节实数)。