Ubuntu Preseed i386 UEFI PC не удается установить 64Bit - > личинка-EFI-amd64 подписан

Fortran на самом деле не делает массивы указателей. Ваше объявление

type(tSmall), pointer       :: var_small(:)

не определяет var_small как массив указателей на вещи типа tsmall; скорее, он определяет его как указатель на массив вещей типа tsmall.

Когда я компилирую ваш код, Intel Fortran дает более полезное сообщение об ошибке

Синтаксис назначения этого указателя данных неверен: в этом контексте ожидается «связанный spec» или «связанное переназначение».

, который приводит нас к R735 в стандарте Fortran 2003. Компилятор пытается проанализировать var_small(1) не так, как вы хотите, в качестве ссылки на первый элемент в массиве указателей, но либо в bounds-spec-list , либо в переопределении границ -list . Выражение не имеет правильного синтаксиса для и синтаксического анализа.

Итак, это касается вопроса о том, что означает ошибка. Что вы с этим поделаете? Это зависит от ваших намерений. Обычное предложение состоит в том, чтобы определить производный тип по этим строкам

type myptr
    type(tsmall), pointer :: psmall
end type myptr

, а затем использовать массив из этих

type(myptr), dimension(:), allocatable :: ptrarray

Лично мне никогда не нравился такой подход и никогда не нужно было его использовать (я пишу очень простые программы). Я ожидаю, что с Fortran 2003 есть и более подходящие подходы, но, не зная ваших намерений, я не решаюсь советоваться.

0
задан densha 21 February 2019 в 20:17
поделиться