我现有的子程序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]。 –