子程序声明时出现错误
错误提示:-Configuration: snmaina - Win32 Debug--------------------
Compiling Fortran...
C:\Users\admin\Desktop\SNOPT_EQUI0\userfg.f
C:\Users\admin\Desktop\SNOPT_EQUI0\userfg.f(43) : Error: Syntax error, found '::' when expecting one of: * <IDENTIFIER>
EXTERNAL :: Hex1, READINIT
---------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\userfg.f(44) : Error: Syntax error, found '::' when expecting one of: * <IDENTIFIER>
EXTERNAL :: ONESTEPRK4TH, VECTORFIELDequiTH, JACFUNequiTH,
---------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\userfg.f(43) : Error: The *v specifier is invalid unless the NOF77 dialect is specified.
EXTERNAL :: Hex1, READINIT
------------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\userfg.f(44) : Error: The *v specifier is invalid unless the NOF77 dialect is specified.
EXTERNAL :: ONESTEPRK4TH, VECTORFIELDequiTH, JACFUNequiTH,
------------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\IpoptConstDeriv.f
C:\Users\admin\Desktop\SNOPT_EQUI0\IpoptConstDeriv.f(25) : Error: Syntax error, found '::' when expecting one of: * <IDENTIFIER>
EXTERNAL :: ONESTEPRK4TH, VECTORFIELDequiTH, JACFUNequiTH,
---------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\IpoptConstDeriv.f(25) : Error: The *v specifier is invalid unless the NOF77 dialect is specified.
EXTERNAL :: ONESTEPRK4TH, VECTORFIELDequiTH, JACFUNequiTH,
------------------^
C:\Users\admin\Desktop\SNOPT_EQUI0\hex1.f
C:\Users\admin\Desktop\SNOPT_EQUI0\hex1.f(87) : Error: This intrinsic function is invalid in constant expressions.
parameter (ISTAGE = 182, xpi = 4.d0*datan(1.d0))
--------------------------------------------------^
Error executing df.exe.
snmaina.exe - 7 error(s), 0 warning(s)
请教大师们怎么解决?
在我这里,错误行都是正常的。
请注意你的源代码是自由格式,还是固定格式?
如果还有问题,建议上传所有代码(以附件形式上传 userfg.f 文件 )。 chuxf 发表于 2014-4-25 19:12
在我这里,错误行都是正常的。
请注意你的源代码是自由格式,还是固定格式?
我用的是fortran6.5版本,感觉这些函数定义都是对的,不知道为什么会报错?
CVF 貌似不允许 EXTERNAL 后面跟冒号,尝试删除后面的双冒号既可。
IVF 允许,我使用的是它。 chuxf 发表于 2014-4-25 21:04
CVF 貌似不允许 EXTERNAL 后面跟冒号,尝试删除后面的双冒号既可。
IVF 允许,我使用的是它。 ...
嗯嗯,删了后那些不报错,但是还有一个内部函数DATAN报错,
C:\Users\admin\Desktop\SNOPT_EQUI0\hex1.f(87) : Error: This intrinsic function is invalid in constant expressions.
parameter (ISTAGE = 182, xpi = 4.d0*datan(1.d0))
这是什么原因呢?这个函数不就是求反正切吗? chuxf 发表于 2014-4-25 21:04
CVF 貌似不允许 EXTERNAL 后面跟冒号,尝试删除后面的双冒号既可。
IVF 允许,我使用的是它。 ...
还有我想问一下,现在fortran使用IVF好呢还是用CVF好呢?我刚接触fortran不久,不知道用哪个版本好一些, 猴雨云 发表于 2014-4-25 21:15
嗯嗯,删了后那些不报错,但是还有一个内部函数DATAN报错,
C:\Users\admin\Desktop\SNOPT_EQUI0\hex1.f( ...
CVF 也不允许在常数定义时使用内部函数。
所以,把这句改为
parameter(ISTAGE = 182, xpi = 3.141592654D0 )
另,编译器之间没有绝对的好坏。
CVF 古老,经典,有些写法不支持,win7/8 无法使用。
IVF 新潮,支持的语法更现代,但臃肿,安装和操作都麻烦。
建议有条件的话,选择 IVF 吧
chuxf 发表于 2014-4-25 21:38
CVF 也不允许在常数定义时使用内部函数。
所以,把这句改为
嗯嗯,谢谢呢,这个错误我已经改了,就是用CVF感觉有些语法错误的地方不容易察觉,我之前一直用的是matlab,请问你知道怎么在fortran中调用matlab自己编的函数吗? 猴雨云 发表于 2014-4-25 21:43
嗯嗯,谢谢呢,这个错误我已经改了,就是用CVF感觉有些语法错误的地方不容易察觉,我之前一直用的是matla ...
matlab 我不太熟悉怎么调用,百度一下相关的内容吧 chuxf 发表于 2014-4-25 22:02
matlab 我不太熟悉怎么调用,百度一下相关的内容吧
嗯嗯,谢谢哈,嘿嘿
页:
[1]