저는 fortran으로 작성된 코드의 일부를 이해하려고합니다. 코드는 다음과 같은 부분이 포함되어Fortran에서 _real_ 전 처리기를 사용하는 것은 무엇입니까?
this page에서REAL(KIND=8), DIMENSION(x,y), INTENT(INOUT) :: AR
_REAL_, DIMENSION(x,y), INTENT(INOUT) :: BR
, 난 _REAL_
정밀 제어를위한 전처리 것을 알게되었습니다.
_REAL_
은 실제로이 코드에서 무엇을합니까?AR
값을BR
에 할당 할 수 있습니까? 그들 사이에 타입 비 호환성 문제가 있습니까?- 나는 C 기능
extern "C" void assign_(double *AR, double *BR , int *x, int*y)
를 사용하여BR
에AR
의 값을 할당하려고했지만, 난이 문제가 있습니다, 그리고 문제가AR
와BR
사이의 호환성 문제로 인한 것 같다 내가 위의 코드를 변경하는 경우 때문에 :
REAL(KIND=8), DIMENSION(x,y), INTENT(INOUT) :: AR REAL(KIND=8), DIMENSION(x,y), INTENT(INOUT) :: BR
, 문제가 해결되었습니다. 이런 식으로 코드를 변경하면 문제가 있습니까?
'_REAL_'이 전역 적으로 사용 가능한지 확실하지 않습니다. 당신이 준 링크에서, 그것은 컴파일시에 정의됩니다. 매크로를 피하고,'ISO_Fortran_env'와 같은 표준을 따르는 것을 사용하십시오. –
더 많은 코드 또는 Makefile을 보여줘야합니다. 즉, 당신의'_REAL_'은 어디에서 왔습니까? –
'_real_'의 의미는 정의 된 작업 정밀도 (아마도'DPREC'에 의해 설정 됨)에 따라 그 링크를 읽는 것만으로 변합니다. – agentp