
Fortran编程出现 Error
我使用Fortran写一个DLL,前面函数的声明如下:subroutinegalfit(Temp,freqnom,molmass,m,nl,n,delnuD,parm,z...
我使用Fortran写一个DLL,前面函数的声明如下:
subroutine galfit(Temp,freqnom,molmass,m,nl,n,delnuD,parm,z0,base_offset,base_slope,dxx,gexp,xx,rn,parm1,ldfjac,lwa,info
后面又声明了全局变量:
common xx(npts),gexp(npts),numfft,xmax,z,t,nl
但是出现错误:
Error: A dummy argument name is invalid in this context. [XX]
common xx(npts),gexp(npts),numfft,xmax,z,t,nl
---------------^
Error: A dummy argument name is invalid in this context. [GEXP]
common xx(npts),gexp(npts),numfft,xmax,z,t,nl
------------------------^
Error: A dummy argument name is invalid in this context. [NL]
common xx(npts),gexp(npts),numfft,xmax,z,t,nl
哪位大神能告诉我怎么解决这个问题吗?可以增加悬赏! 展开
subroutine galfit(Temp,freqnom,molmass,m,nl,n,delnuD,parm,z0,base_offset,base_slope,dxx,gexp,xx,rn,parm1,ldfjac,lwa,info
后面又声明了全局变量:
common xx(npts),gexp(npts),numfft,xmax,z,t,nl
但是出现错误:
Error: A dummy argument name is invalid in this context. [XX]
common xx(npts),gexp(npts),numfft,xmax,z,t,nl
---------------^
Error: A dummy argument name is invalid in this context. [GEXP]
common xx(npts),gexp(npts),numfft,xmax,z,t,nl
------------------------^
Error: A dummy argument name is invalid in this context. [NL]
common xx(npts),gexp(npts),numfft,xmax,z,t,nl
哪位大神能告诉我怎么解决这个问题吗?可以增加悬赏! 展开
2个回答
展开全部
如果你通过虚参传递 xx ,那就不要再放入 common 里面了。
这两种方法都可以用来传递数据,但不能同时使用。
请不要问我如何修改,这取决于你打算用什么方法传递 xx
这两种方法都可以用来传递数据,但不能同时使用。
请不要问我如何修改,这取决于你打算用什么方法传递 xx
追问
请问一下,通过虚参传递是指,不同子函数之间虚参的命名相同,那么他们的数据就是共享的?
追答
建议你看一本教材吧。
不同子程序的虚参命名相同,并不说明什么。
调用者通过实参与被调用者的虚参对应,实现数据共享。
举例:
调用者(实参):
call 结婚(张三,李四)
call 结婚(王麻子,赵瘸子)
call 离婚(张三,李四)
被调用者(虚参):
subroutine 结婚(男方,女方)
subroutine 离婚(男方,女方)
子程序 结婚 和 子程序 离婚。他们的虚参都是 男方 和 女方。但结婚的男方,与离婚的男方没有直接关系。(所以,不同子程序之间的虚参命名相同,并不说明什么)
调用者的实参,张三,李四。与结婚的虚参,男方,女方进行对应。
此时,结婚的男方就是张三,结婚的女方就是李四。
目前来说,我不建议你用 COMMON 传递数据。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询