Недавно я столкнулся с ситуацией, когда я хотел вызвать функцию C из Фортрана из-за полезного фрагмента кода C. Для удобства операций с массивами я хотел иметь возможность вызывать эту функцию также с аргументами массива, но она принимала только скалярные аргументы.
В Фортране, конечно, можно просто объявить процедуру elemental
, чтобы достичь этого, и можно объявить интерфейс к процедуре C с помощью bind(C)
. Однако, поскольку C не имеет концепции элементарных процедур, стандарт Fortran (2008) исключает эту комбинацию:
C1246 Элементарная процедура не должна иметь атрибута BIND.
Итак, можно ли реализовать эту функциональность в Фортране?