I имеет следующую структуру коды:Fortran: внешний аргумент функции имеет размер 0
PROGRAM main
IMPLICIT NONE
REAL*8, DIMENSION(:), ALLOCATABLE :: var
ALLOCATE(var(3))
var(1) = 1.0d0
var(2) = 2.0d0
var(3) = 3.0d0
CALL f1(var, f2)
CONTAINS
SUBROUTINE f1(arg_in, fun)
REAL*8, DIMENSION(:), INTENT(IN) :: arg_in
EXTERNAL fun
PRINT *, arg_in
CALL fun(arg_in)
PRINT *, arg_in
END SUBROUTINE f1
SUBROUTINE f2(arg_in)
REAL*8, DIMENSION(:), INTENT(INOUT) :: arg_in
PRINT *, SIZE(arg_in)
arg_in = 2.0d0 * arg_in
RETURN
END SUBROUTINE f2
END PROGRAM main
При выполнении программы, я заметил, что размер массива в функции f2 = 0. В моей реальной программе у меня есть Та же проблема, хотя я получаю сообщение об ошибке в отличие от моей простой программы выше:
Попытка использовать указатель F, если она не связана с целевым
Может ли кто-нибудь дать подсказку, что может быть проблемой?
Вы не можете получить то же сообщение об ошибке, если вы не используете указатели, и ошибка конкретно упоминает об этом. –