问题描述
我是Fortran的新手,并且正在使用Geany IDE。我正在查看一些旧的Fortran 90,目的是将其转换为MATLAB。我正在简化问题,这可能是一个非常简单的新手Fortran问题,但我似乎在网上找不到任何解释。
比方说,我有一个名为“ simple_program.f”的主程序。
program simple_program
integer b
logical check
call get_a(a)
b = 2
check = a < b
write(*,*) check
end
此主程序从另一个名为“ a_in.f”的程序文件中调用一个名为“ get_a”的子程序,如下所示:
subroutine get_a(a)
integer a
a = 1
return
end
当我尝试在Geany中编译simple_program.f时,在生成“未定义对'get_a'的引用”时出现错误。如果我尝试在Geany中编译a_in.f,则会出现错误“未定义对'WinMain'的引用”。
三个问题:
-
如何链接“ simple_program.f”和“ a_in.f”以告诉Geany一起编译它们?从网上看,我似乎必须使用一个makefile,但是(我认为)Geany文档在解释“ Build”菜单的工作方式方面表现得很差。
-
Fortran的文件只能包含子例程吗?如果是这样,那如何运作?文件a_in.f没有“主”程序,它仅包含一个子例程。但是自从有了可执行文件以来,我正在查看的脚本显然已经编译过了。
-
如果它们是从其他文件的子例程输出的,则不必在主程序文件的顶部显式定义所有变量吗?主程序(simple_program.f)没有定义变量“ a”,我感到惊讶,因为我认为Fortran必须定义所有变量。
感谢您为解决这些问题提供的帮助。请假设我知道的很少。以及所有有用的初学者资源也将受到赞赏。
欢呼
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)