On 3/27/2010 10:40 AM, burlen wrote:
Ian Lance Taylor wrote:
burlen <burlen.loring@xxxxxxxxx> writes:
When calling a c function from a fortran 90 program with members of a
user defined types for output arguments of the called subroutine the
user defined types aren't being modified as they should be (according
to my understanding).
When you call a C function, you get the C rules. It doesn't matter
whether you are calling it from Fortran or not. In C, a modification
of an argument is not reflected back to the caller.
Ian
In my understanding, Fortran unless otherwise instructed is supposed
to pass by address. In the c function modifying the data pointed to
should do just that, and be visible to the caller. What I don't
understand is why passing the member of a user defined type behaves as
if it's passed by value in this case, while passing the corresponding
native type is passed by address and works as expected.
If you wish to assure control over pass by value/reference, it's all
there in iso_c_binding. You appear to be trying to avoid standard
facilities on the Fortran, and you're leaving us guessing about your C side.
--
Tim Prince