[Fortran] 纯文本查看 复制代码
program fmain
use,intrinsic:: iso_c_binding
implicit none
interface
subroutine AddNumber(res,num) bind(C)
use,intrinsic:: iso_c_binding,only: C_INT, C_DOUBLE
implicit none
real(kind=C_DOUBLE):: res
integer(kind=C_INT):: num
end subroutine AddNumber
end interface
integer(kind=4):: num
real(kind=8):: res
res=0d0
do while(.true.)
write(*,*) 'please input a integral number:'
read(*,*) num
call AddNumber(res,num)
write(*,'(A,3X,F10.3)') 'The result is:',res
enddo
end program fmain
C代码为:[Fortran] 纯文本查看 复制代码
program fmain
use, intrinsic:: iso_c_binding
implicit none
interface
subroutine addnum(a, b) bind(c, name="AddNumber")
import
implicit none
type(c_ptr),value::a
integer(c_int),value, intent(in)::b
end subroutine
end interface
integer(c_int):: num
real(c_double),target:: res
num = 2
res = 1.0D0
call addnum(c_loc(res), num)
write(*, *)"Result:",res
end program
[C] 纯文本查看 复制代码
#include <stdio.h>
void AddNumber(double *res, int num)
{
printf("C\tInput:%f\n", *res);
*res += (double)num;
printf("C\tAdded:%f\n", *res);
}