2014-01-22 1 views
2

С Фортран-изо-с-связывающим я могу интерфейс функции C и получить переменные типов, какПреобразовать Фортран-изо-с-связывающим реальной переменной в реальном

real(c_float) 
integer(c_int) 

Но в остальной части программы я бы как использовать базовые типы (просто потому, что я не хочу заменять многие реальные переменные переменными real(c_float) только из-за одной функции интерфейса)

Есть ли безопасный, платформенный/компилятор независимый и надежный способ бросить fortran-iso- c-binding типы обратно в fortran (примитивные) типы? equivalent to REAL()

ответ

4

REAL внутреннее - это то, что вы хотите. Или, что то же самое, простое назначение.

REAL(C_FLOAT) :: r_c 
REAL :: r_default 
r_default = r_c 

Если преобразованное значение вне диапазона для целевого типа, ваша программа не соответствует требованиям.

+0

[REAL intrinsic documentation - section Аргументы] (http://gcc.gnu.org/onlinedocs/gfortran/REAL.html) утверждает, что аргумент «Должен быть INTEGER, REAL или COMPLEX». – Peter

+5

Объект, объявленный 'REAL (C_FLOAT) :: x', является объектом типа REAL. Вы можете использовать внутреннюю функцию REAL для преобразования между различными реальными. Назначение делает эквивалентную вещь, по определению. – IanH

 Смежные вопросы

  • Нет связанных вопросов^_^