C_LOC — 객체의 C 주소 얻기

C_LOC — 객체의 C 주소 얻기

C 코드에 Fortran 객체의 메모리 주소를 넘겨야 하는 상황이 자주 생겨요. C_LOC는 인자의 C 주소를 알아내는 조회 함수예요.

출처: gfortran 공식 문서 - C_LOC

본문

RESULT = C_LOC(X)

설명(Description)

C_LOC(X)는 인자의 C 주소를 결정해요.

분류(Class)

조회 함수(Inquiry function)

인자(Arguments)

  • XPOINTER 또는 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_associatedb가 실제로 a를 가리키는지 확인한 뒤 아니라면 멈추는 예제예요.

표준(Standard)

Fortran 2003 이상

같이 보기

C_ASSOCIATED — C 포인터의 상태, C_FUNLOC — 프로시저의 C 주소 얻기, C_F_POINTER — C를 Fortran 포인터로 변환, C_F_PROCPOINTER — C를 Fortran 프로시저 포인터로 변환