C_LOC — 객체의 C 주소 얻기
C_LOC — 객체의 C 주소 얻기
C 코드에 Fortran 객체의 메모리 주소를 넘겨야 하는 상황이 자주 생겨요. C_LOC는 인자의 C 주소를 알아내는 조회 함수예요.
본문
RESULT = C_LOC(X)
설명(Description)
C_LOC(X)는 인자의 C 주소를 결정해요.
분류(Class)
조회 함수(Inquiry function)
인자(Arguments)
X—POINTER또는TARGET속성 중 하나를 가져야 해요. 공인덱스(coindexed) 객체여서는 안 돼요. 상호운용 가능한 타입·kind 타입 파라미터를 가진 변수이거나, 길이 타입 파라미터가 없는 스칼라·비다형 변수여야 해요.
반환값(Return value)
반환값은 C_PTR 타입이며 인자의 C 주소를 담아요.
예제
subroutine association_test(a,b)
use iso_c_binding, only: c_associated, c_loc, c_ptr
implicit none
real, pointer :: a
type(c_ptr) :: b
if(c_associated(b, c_loc(a))) &
stop 'b and a do not point to same target'
end subroutine association_test
c_loc(a)로 얻은 a의 주소를 b에 담고, c_associated로 b가 실제로 a를 가리키는지 확인한 뒤 아니라면 멈추는 예제예요.
표준(Standard)
Fortran 2003 이상
같이 보기
C_ASSOCIATED — C 포인터의 상태, C_FUNLOC — 프로시저의 C 주소 얻기, C_F_POINTER — C를 Fortran 포인터로 변환, C_F_PROCPOINTER — C를 Fortran 프로시저 포인터로 변환