Fortran 라이브러리 CUBPACK의 서브 루틴 Rule_Tn
에는 통합 벡터 기능을 설명하는 매개 변수 Integrand
이 필요합니다. 내가 바로 위의이 인터페이스에 일치하는 C에서 함수 타입을 정의 할 필요가 C 코드에서 Rule_Tn
전화를 원하기 때문에 그것은Fortran은 어떻게 배열을 반환합니까?
INTERFACE
FUNCTION Integrand(NF,X) RESULT(Value)
USE Precision_Model
INTEGER, INTENT(IN) :: NF
REAL(KIND=STND), DIMENSION(:), INTENT(IN) :: X
REAL(KIND=STND), DIMENSION(NF) :: Value
END FUNCTION Integrand
END INTERFACE
입니다. 따라서 Fortran 함수가 배열을 반환하는 방법을 알아 냈습니다. 처음에 다음 C 서명을 가정했습니다.
void Integrand(double* value, const int* nf, const int* x);
위의 인터페이스와 일치합니다. 그러나 아주 틀린! 나는 세그 폴트가있어. 그리고 이미 double이 REAL(KIND=STND)
에 해당하는 유형이고, STND
이 모듈 Precision_Model
에서 나온다고 테스트했습니다.
이제 누가 올바른 서명을 말해 줄 수 있습니까? GNU Fortran과 C 컴파일러를 사용하고 있습니다.
'STND'의 값은'Precision_Model '모듈에 정의되어 있고'REAL (KIND = STND)'는'double'에 해당합니다. 질문 :이 인터페이스에 해당하는 C 서명은 무엇입니까? – phlipsy
@phlipsy : "제공 한"말씨를 바꿀 수도 있습니다. 답변을 업데이트 중입니다. – Potatoswatter
나는 그 질문에 대한 부분을 다시 말했습니다. – phlipsy