【发布时间】:2017-04-02 21:08:02
【问题描述】:
我想让我的代码获取在另一个文档中编写的代码,阅读它,然后像在代码中一样使用它。假设我们有以下内容:
MODULE samplemod
CONTAINS
FUNCTION sillysum(boudary,function) RESULT(counter)
IMPLICIT NONE
REAL(KIND=8) :: boundary, counter
REAL(KIND=8), DIMENSION(:) :: function
INTEGER :: m
counter = 0.d0
DO m = 1, my_mesh%me
counter = function(m) + externalfunction
END DO
END FUNCTION sillysum
END MODULE samplemod
PROGRAM sampleprogram
USE samplemod
REAL(KIND=8), DIMENSION(:) :: function1
ALLOCATE(function1(100))
DO m=1, 100
function1(i) = i
END DO
WRITE(*,*) sillysum(100,function1)
END PROGRAM sampleprogram
在某个外部文件(比如“externfunct.txt”)中,有人写了m**2。 Fortran 代码如何读取外部函数m**2、SIN(m) 甚至0 并替换externalfunction。这是一个更简单的例子:
REAL(KIND=8) :: x = 2
CHARACTER(LEN=*) :: strng = "external"
WRITE(*,*) "Hello world, 2 + ", strng, " = ", 2 + external
在我写的 txt 文件中我写了SIN(x)。
【问题讨论】:
-
你的意思是在编译时还是在运行时?这是两种截然不同的情况。
-
你问题开头的代码块肯定是完全错误的。
kind=8也非常丑陋且不便携。这并不意味着所有编译器都是 8 个字节。 -
有this sort of thing,但这可能不是你的意思。
-
我希望在运行时完成。这样我就不必每次想要更改函数时都筛选代码,也不必编译它。 “丑陋且不便携”是什么意思?你会推荐什么?
-
我询问了语言选择,因为我认为解释性语言(例如 python)可能更适合这项任务。
标签: function include fortran external