回 帖 发 新 帖 刷新版面

主题:CLASS关键字和INTENT关键字 格式如何写?

在编程的时候遇到用ABSTRACT INTERFACE去定义某个类中抽象的函数,但是又想让这个函数是ELEMENTAL的,这样的话,函数中的每个参数都要用INTENT修饰,但是在把CLASS和INTENT写在一起的时候报错。

想问下各位大虾,正确格式该如何写,另外,每个类的对象还需要INTENT修饰吗?

我再继续调试下。。。

例子如下
Module A
Implicit none

Type, abstract, public :: D
        Real :: ....
 
    Contains
        Procedure(ComputationX), private, deferred :: Computation

End type D

Abstract interface

    Elemental real function ComputationX (this, T) RESULT(p)
        class(D), intent(in) :: this    !!!!这一行格式该怎么写?
        real, intent(in) :: T
    End function ComputationX
    
End interface

回复列表 (共9个回复)

沙发

在聲明 class(D) 前應先加上 import 語句
Elemental real function ComputationX (this, T) RESULT (p)
  import :: D
  class(D), intent(in) :: this
  real, intent(in) :: T
End function ComputationX

板凳

[quote]在聲明 class(D) 前應先加上 import 語句
Elemental real function ComputationX (this, T) RESULT (p)
  import :: D
  class(D), intent(in) :: this
  real, intent(in) :: T
End function ComputationX[/quote]

多谢了,能解释一下吗?Import在这里什么作用?在网上搜了好多,资料很少。哪本书上有相关的内容呢?

3 楼

唉,
我的win7是英文的,上论坛老是有乱码。。。

多谢一楼,能解释一下吗?IMPORT在这里起什么作用?在网上搜了,资料很少,那本书上有相关的内容啊?

4 楼


哦,在FOTRAN95,2003上看到了,IMPORT是用来把类型输入到INTERFACE里面的,谢谢

另外,备注一点,IVF 11.0.06是不能使用IMPORT STATEMENT,刚下载了一个试用版的IVF XE 11,可以使用IMPORT。

看了看正版的报价600多刀,伤不起啊。

大家知道其他编译器可以实现FORTRAN2003的面对对象的特性吗?没用过GFORTRAN和其他编译器,不知道其他编译器发展的怎样了,应该是IVF目前最强大吧?

5 楼

gfortran最新版本实现了不少,三角函数及IO的性能不行,其他与IVF不分伯仲:)
PGI-Fortran很牛,但也一样很贵:)

6 楼

[quote]gfortran最新版本实现了不少,三角函数及IO的性能不行,其他与IVF不分伯仲:)
PGI-Fortran很牛,但也一样很贵:)[/quote]

三角函数及IO属于各自平台的CRT实现,编译器不管。

他们不是一个项目组。

为什么慢,答案是授权。

7 楼


在电驴上看到,有PGI FORTRAN的V11.1的版本,不过是不是不支持FORTRAN2003呢?大家有没有用过的?

PGI Visual Fortran包括最新版的PGI本机OpenMP,以及支持FORTRAN77和Fortran95编程语言的自动并行化编译器,主要特性包括一整套:由面向Fortran的文本编辑器、Fortran本征函数提示和选择关键字组成的Visual Studio Fortran项目系统; 。。。

8 楼

最新的PGI支持到最新的FORTRAN标准,并实现了部分草案(他们这么说的)
只是PGI不支持,也不准备支持CoArray。
PGI可以对AMD平台及INTEL平台同时优化,IVF不行。

9 楼

[quote]最新的PGI支持到最新的FORTRAN标准,并实现了部分草案(他们这么说的)
只是PGI不支持,也不准备支持CoArray。
PGI可以对AMD平台及INTEL平台同时优化,IVF不行。[/quote]
我觉得multiarch的做法并不好
虽然每个编译器都能弄出来……

一旦指令检测稍有失误,整个就挂掉了

我来回复

您尚未登录,请登录后再回复。点此登录或注册