我現有的子程序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是新的子程序的 可選參數d
A(a,b,d,e)
我可以搜索我的所有代碼子程序A的所有出現 避免這種錯誤的解釋,但我錯過了,甚至他們中的一個,我會 要付出巨大的代價(錯誤的結果,痛苦的時刻,...),但一個好的伎倆讓 編譯器抱怨,我必須解決它們。
這帶來了我的問題。如何讓編譯器不要假設 可選變量的默認關聯,除非我在=
符號中輸入?即,如果我想要 使用一個可選變量,我會將其作爲c=2.0D0
,e=3.0D0
傳遞給它。 無=符號,有沒有辦法使它成爲默認的非選項 參數?
這樣,編譯器肯定會抱怨,因爲c
不是 匹配修改的子例程中的任何現有變量。
歡迎光臨。請閱讀[旅遊]和[問]。適當的格式將使你的文章更好。使用標籤[tag:fortran]。如果您想限制舊的和過時的Fortran 90的答案(通常不需要),可以添加[tag:fortran90]。 –