У меня есть длинный код fortran, который должен быть использован для использования с python. Я решил использовать интерфейс Fortran-> C-> Python.интероперабельность c-fortran - производные типы с указателями
У меня проблема: я вывел типы в Fortran-модулей, которые содержат
double precision, allocatable
типа в качестве членов.
При попытке компиляции с ifort я получаю (с gfortran что-то похожее):
Each component of a derived type with the BIND attribute shall be a nonpointer,
nonallocatable data component with interoperable type and type parameters
Это на самом деле с соглашением с компилятором документации Intel и стандарт Fortran 2003: пункт 15.2.5.
Есть ли способ получить доступ к «типу» Фортрана с выделенным или указателем внутри?
Для каждого экземпляра объекта, тип которого является моим производным типом, я знаю фактический размер включенных массивов. Они могут быть разными для каждого экземпляра. Я мог бы справиться с разыменованием. Возможно, я не расстаюсь с проблемой. Для меня указатель - это просто адрес в памяти, и что-то вроде struct { int * a int * b int * c }; имеет размер 3 * sizeof (int *), который обычно оценивается до 24 байтов (это значение может быть равно только 12 байтам, но оно может быть определено для каждого компьютера раз и навсегда). Что в Фортране отличается? Указатель в Fortran сильно отличается от указателя на C? – Lacek
Указатели в Фортране и еще более выделяемые компоненты - это больше, а затем просто адреса. Например, они могут указывать на несмежные массивы. –