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.