我们可以在Fortran中创建自定义属性吗?

问题描述:

扩展我以前的问题here,我想知道是否有可能在fortran中创建自定义属性?我们可以在Fortran中创建自定义属性吗?

像这样

real, custom_attribute, allocatable :: variable(:) 

如果是可以做的,我猜,下面就可以过

custom_type, custom_attribute, allocatable :: variable(:) 
+3

我认为答案是否定的 - 您正在讨论的属性是在编译器作为语言规范的一部分。但是如果你告诉你想要完成什么,也许人们可以用另一种方式来提出建议。 – robince 2011-04-25 06:40:43

+0

@thorpe,谢谢你!这只是一个界面问题。 PGI正在做类似“real,device,allocatable :: var(:)”(设备是他们的自定义属性来表示该数组位于不同的设备上)。我怀疑这可能是因为他们的编译器。我可以轻松使用派生类型来达到我的目的。再次感谢。如果你可以把它作为答案,我会接受它。 – 2011-04-25 10:56:48

您可以创建用户定义的“类型”来完成。可能你可以用这个功能来完成你的目标。请参阅http://en.wikipedia.org/wiki/Fortran_95_language_features#Derived_data_types

+0

我明白我们可以做一些类似“custom_type,allocatable :: variable(:)”的东西,我可能会问一个白痴问题,因为我对fortran很新。我们可以做一些像“真正的,custon_attribute,allocatable :: variable(:)” – 2011-04-25 00:00:16

不,在标准Fortran中不存在自定义属性。但是,扩展M. S. B.s的答案是,在使用派生数据类型时,可以使用Fortran 2003引入的参数化派生类型。 它允许您为派生数据类型定义“kind”和“len”属性。 (我的类型(rk = selected_real_kind(15),extent = size(a))):: b