- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
There is a compilation issue occured when circular reference is employed. See the codes:
module test1 implicit none integer, parameter :: a = 5 interface module subroutine sub1() end subroutine sub1 end interface end module test1 submodule(test1) submodule1 use test2 implicit none contains module procedure sub1 implicit none print*, b end procedure sub1 end submodule submodule1 module test2 implicit none integer, parameter :: b = 4 interface module subroutine sub2() end subroutine sub2 end interface end module test2 submodule(test2) submodule2 use test1 implicit none contains module procedure sub2 implicit none print*, a end procedure sub2 end submodule submodule2 program main use test1 use test2 !TO DO. end program main
The use association in submodules are permitted by the standard. An error shows up when compile for the first time:
error #7002: Error in opening the compiled module file. Check INCLUDE paths. [TEST2]
If then we compile it again without cleanning-up, the target assembly will be created successfully. So is it a compiler mistake ? Or how should I do to solve it ?
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Blane J. wrote:
Yes Andrew, they are all in the same file, separate case gives the same result.
In the same file is a certain fail, and would be a bit daft as the whole point of submodules is to separate the interface from the implimentation to avoid build cascades. You are forcing things to be all recompiled.
コピーされたリンク
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Yes Andrew, they are all in the same file, separate case gives the same result.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
1>------ Build started: Project: blane_test, Configuration: Debug Win32 ------ 1>Compiling with Intel(R) Visual Fortran Compiler 18.0.0.124 [IA-32]... 1>Source2.f90 1>Source4.f90 1>Source3.f90 1>Source5.f90 1>Source1.f90 1>Linking... 1>Embedding manifest... 1> 1>Build log written to "file://C:\Users\....\blane_test\Debug\BuildLog.htm" 1>blane_test - 0 error(s), 0 warning(s) ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
It works OK for me
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Blane J. wrote:
Yes Andrew, they are all in the same file, separate case gives the same result.
In the same file is a certain fail, and would be a bit daft as the whole point of submodules is to separate the interface from the implimentation to avoid build cascades. You are forcing things to be all recompiled.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Yes, I then splited those entities each into different files and had the same result as you did, previously I only isolate the main program from the modules and submodules. Thanks Andrew.
