小编Dav*_*sen的帖子

无法与同一文件中的模块和主程序一起编译

我正在尝试使用与我的主程序在同一文件中的模块.但是,我无法让它发挥作用.Fortran是否允许模块包含在与主程序相同的文件中,或者它是否必须位于单独的文件中?这是我的代码的简单版本:

main program
  use my_module
  call my_subroutine()
end program main

module my_module
  contains
    subroutine my_subroutine()
      print *, "Hello World!"
    end subroutine my_subroutine
end module my_module
Run Code Online (Sandbox Code Playgroud)

当我尝试编译此文件时,我得到:

Fatal Error: Can't open module file 'my_module.mod' for reading at (1): No such file or directory
Run Code Online (Sandbox Code Playgroud)

fortran

7
推荐指数
1
解决办法
2096
查看次数

使用延迟长度字符串来读取用户输入

我想以"简单"的方式使用延迟长度的字符串来读取用户输入.我想这样做的原因是我不想在知道用户输入的大小之前声明字符串的大小.我知道有"复杂"的方法来做到这一点.例如,可以使用iso_varying_string模块:https://www.fortran.com/iso_varying_string.f95 .此外,还有一个解决方案:未定义长度的Fortran字符输入.但是,我希望得到的东西简单,或几乎一样简单,如下所示:

program main

  character(len = :), allocatable :: my_string
  read(*, '(a)') my_string
  write(*,'(a)') my_string
  print *, allocated(my_string), len(my_string)

end program
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,输出是:

./a.out
here is the user input

F       32765
Run Code Online (Sandbox Code Playgroud)

请注意,没有输出write(*,'(a)') my_string.为什么?

此外,my_string尚未分配.为什么?

为什么这不是Fortran的简单功能?其他语言有这个简单的功能吗?我一般对这个问题缺乏一些基本的了解吗?

fortran

7
推荐指数
2
解决办法
2503
查看次数

Fortran,在使用 PARAMETER 属性初始化数组时最好使用 DIMENSION

在 Fortran 中,这两种初始化参数数组的方法是否相同?如果不是,那是什么意思dimension(*)

integer, parameter, dimension(2) :: x = [1,2]

对比

integer, parameter, dimension(*) :: x = [1,2]

fortran

3
推荐指数
1
解决办法
98
查看次数

标签 统计

fortran ×3