У меня есть очень маленький пример кода Fortran, который я хотел бы понять, пожалуйста.
subroutine test_iso_c
use ISO_C_BINDING
implicit real(c_double) (a-h,o-z)
real :: var, expression
interface
real(c_double) function test (y) bind( c )
use ISO_C_BINDING
real(c_double), value :: y
end
end interface
! call
var = test(expression) ! - expression is a real declared variable which is calculated using simple arithmetic operation.
end
Можете ли вы объяснить мне следующее (я предполагаю, что c_double означает двойную точность в области кода C?)
1 - Что делает implicit real(c_double) (a-h,o-z)
?
2 - что делают value
и bind(c)
в интерфейсе функции
3 - Я видел этот код как часть более крупной процедуры, можете ли вы сказать, что обеспечивает/делает эта тестовая функция?
test
. Поведение оператораimplicit
здесь не отличается от любого другого (до F2018) использования. - person francescalus   schedule 11.02.2019implicit
удовлетворением - person A2LBK   schedule 11.02.2019implicit
делает любую переменную с начальной буквой a, b, c,..., h, o, p, q,..., z без явного объявления типа типомreal(c_double)
. Этот другой ответ содержит некоторые подробности об этом. - person francescalus   schedule 11.02.2019