내 기존 서브 루틴 A(a,b,c,d,e)
은 잘 작동합니다. a,b,c
이 실제 인수이고 d
및 e
은 선택적 인수입니다.서브 루틴 인수 목록에서 선택적 인수의 기본 연결을 비활성화하는 방법은 무엇입니까?
다른 많은 서브 루틴은 서브 루틴 A
같은
call A(a,b,c)
이나
call A(a,b,c,d=2.0D0)
또는
call A(a,b,c,e=1.0D0)
지금 호출합니다.
서브 루틴 A
에서 c
을 제거하기로 결정했습니다. 내가 코드를 컴파일 할 때
은 그래서
subroutine A(a,b,d,e)
되고, 같은
call A(a,b,c,e=1.0D0)
같은 라인은 내가 원하는 없는 컴파일러에 의해 불평하지 않았다. 지금, 그것은 C가 A(a,b,d,e)
내가 을 피하도록 잘못 해석에 내 모든 코드에서 서브 루틴 A의 모든 항목을 검색 할 수 있지만, 내가 그리워도 그 중 하나는 내가 을 가고 새로운 서브 루틴의 선택적 인수 d
이라고 생각 (잘못된 결과, 고뇌스러운 순간, ...) 큰 가격을 지불하지만, 좋은 속임수를 컴파일러가 불평하고 필연적으로 그들을 고쳐 보자.
이것은 내 질문을 제기합니다. 내가 =
부호를 넣지 않는 한 컴파일러에게 부탁하지 말고 옵션 변수의 기본 연결을 사용 하시겠습니까? 즉, 변수를 사용하려면 c=2.0D0
, e=3.0D0
으로 전달합니다. = 기호가 없으면 기본값이 아닌 선택적 인수로 설정하는 방법이 있습니까?
이렇게하면 컴파일러는 c
이 수정 된 서브 루틴의 기존 변수와 일치하지 않기 때문에 분명히 불평 할 것입니다.
환영합니다. [둘러보기] 및 [질문]을 읽으십시오. 적절한 형식을 지정하면 게시물이 훨씬 좋아집니다. tag [tag : fortran]을 사용하십시오. 기존의 포트란 90에 대한 응답을 제한하려면 (일반적으로 원하지 않는) [tag : fortran90]을 추가하십시오. –