- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
I am trying to pass a pure function as an argument to another pure function. Is it permissible?
For example,
pure integer function func1(func2, arg2)
external func2
integer, intent(in) arg2
func1 = func2(arg2)
end function func1
pure integer function func1(arg1)
integer, intent(in) arg1
func1 = arg1*arg1
end function func1
I attempted it, but I'm getting an error that the external procedure must be declared pure. If its permissible, how to define the external function as pure.
1 解決策
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Rather than specifying func2 as an external, you should specify the exact interface:
interface
pure integer function func2( arg )
integer, intent(in) :: arg
end function func2
end interface
Otherwise the compiler has no way of knowing what the function argument is doing.
コピーされたリンク
2 返答(返信)
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Rather than specifying func2 as an external, you should specify the exact interface:
interface
pure integer function func2( arg )
integer, intent(in) :: arg
end function func2
end interface
Otherwise the compiler has no way of knowing what the function argument is doing.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Thank you Arjen_Markus, I could make it work with your solution.
