已定义的运算符
定义的运算符是用户定义的一元或二元运算符,或者是扩展的内部运算符 (请参阅 扩展的内部和定义的操作)。 它必须由函数和通用接口块定义。
- 定义一元运算 op x₁:
- 必须存在一个函数或入口,它只指定一个哑参数 d₁。
或者:- INTERFACE 语句中的 generic_spec 指定 OPERATOR (op),或者
- 在声明的类型中有一个泛型绑定 x1 , 通用规格为 OPERATOR(op),并且动态类型中的函数也有相应的绑定 x1。

- 动态类型 x₁ 与哑参数 d₁ 的类型兼容。
- x₁ 的类型参数(如果有)必须与 d₁ 的类型参数匹配。
- 或者
- 函数为 ELEMENTAL,或
- x₁ 的秩及其形状(如果是一个数组)与 d₁ 的匹配
- 定义二元运算 xlox-op xrop:
- 该函数与 FUNCTION 或 ENTRY 语句一起指定,该语句指定了两个哑参数 d ö 和 d ²。
或者:- INTERFACE 块中的 generic_spec 指定 OPERATOR (op),或者
- 在声明的类型中存在泛型绑定 x1 或 x2 , 通用规格为 OPERATOR(op),并且动态类型中的函数存在相应的绑定 x1 或 x2。

- x₁ 和 x₂ 的动态类型分别与哑参数 d₁ 和 d₂ 的类型兼容。
- x₁ 和 x₂ 的类型参数(如果有)分别与 d₁ 和 d₂ 的类型参数匹配。
- 或者:
- 该函数为 ELEMENTAL , x ² 和 x ² 是一致的,或者,
- x₁ 和 x₂ 的秩及其形状,如果其中一个或两者都是数组,则分别与 d₁ 和 d₂ 的等级匹配。
- 如果 op 是内在运算符,则 x₁ 或 x₂ 类型或秩不是内在运算所需的。
- generic_spec 不得对没有自变量的函数或对具有两个以上自变量的函数指定 OPERATOR 。
- 每个参数都必须是非可选的。
- 这些参数必须与 INTENT(IN)一起指定。
- 接口中指定的每个函数都不能有假定字符长度的结果。
- 如果指定的运算符是内部运算符,那么函数参数的数目必须与该运算符的内部用途一致。
- 与泛型名称一样,给定的定义运算符可以应用于多个函数,在这种情况下,它就像泛型过程名称一样是泛型的。 对于内部运算符符号,通用属性包括它们所代表的内部运算。
以下规则仅适用于扩展的固有操作:- 仅当另一自变量的类型为派生类型时,其中一个自变量的类型才能为 BYTE 类型。
- 为非字符运算指定了 -qintlog 编译器选项并且 d₁ 是数字或逻辑时,d₂ 不得是数字或逻辑。
- 为非字符运算指定了 -qctyplss 编译器选项时,如果 x₁ 是数字或逻辑且 x₂ 常量,则执行内部运算。

示例
INTERFACE OPERATOR (.DETERMINANT.)
FUNCTION IDETERMINANT (ARRAY)
INTEGER, INTENT(IN), DIMENSION (:,:) :: ARRAY
INTEGER IDETERMINANT
END FUNCTION
END INTERFACE
END