내가 가지고있는 다음과 같은 FORTRANFORTRAN의 LEN_TRIM은 전달 된 매개 변수와 다르게 동작합니까?
SUBROUTINE SETPATHS(INPUT)
!DEC$ ATTRIBUTES DLLEXPORT::SetPaths
CHARACTER*20 INPUT
CHARACTER*20 DIRECTORY
DIRECTORY = 'ABCDEFG'
WRITE(6, *) 'INPUT LEN_TRIM = ', LEN_TRIM(INPUT)
WRITE(6, *) 'DIRECTORYLEN_TRIM = ', LEN_TRIM(DIRECTORY)
END SUBROUTINE
내가 'ABCDEFG'를 전달, C#을에서 함수를 호출하고 있습니다.
내 디버거에서 중단 점을 설정할 때 INPUT과 DIRECTORY는 정확히 같은 문자를 사용합니다. 둘 다 뒤에 'ABCDEFG'와 동일한 수의 후행 공백이옵니다.
그러나 프로그램 출력
INPUT LEN_TRIM = 20
DIRECTORYLEN_TRIM = 7
이 올바른 동작인가? 두 문자열의 값이 같으면 LEN_TRIM이 다른 결과를 얻는 이유는 무엇입니까?
업데이트 :이 문서화 된 문제가 발견되었습니다 (인텔 8.1 컴파일러는 아니지만). http://support.microsoft.com/kb/89131
완전히 실감 났지만 C#에서 FORTRAN의 함수를 호출하는 이유는 무엇입니까? –
FORTRAN은 번호를 처리합니다. C#은 모든 배관을위한 가장 생산적인 언어입니다. – Larsenal
@Mitch : 불행히도, 당신은 Lapack을 이길 수 없습니다. –