Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Ankündigungen
Important Update: Community Platform Migration​. Learn more​>
29649 Diskussionen

Derived type in interface definitions

netphilou31
Neuer Beitragender III
3.370Aufrufe

Hi,

I have a Fortran module in which I have declared interface definitions to external procedures (located into a dll). Some of the external routines are returning a derived type object. I have added the definition of the derived type into the module, however the compiler imposes that I redefine the derived type in each interface definition. Is it a compiler bug or can you explain why I need to do so ? 

The compiler version I am using is : Intel(R) Visual Fortran Compiler XE on IA-32, version 12.1.6 Package ID: w_fcompxe_2011.12.369 with VS shell 2010.

I had already noticed the same problem with declarations like integer(HANDLE) into an interface block. The compiler is not happy until I add a use IFWIN declaration in the interface block even if one already exists in the module header. The source code is attached.

Best regards,

0 Kudos
4 Antworten
Mark_Lewy
Geschätzter Beitragender I
3.370Aufrufe

The Fortran standard specifies that interface blocks do not inherit (by default) definitions from their host, so this is not a bug.  However, Fortran 2003 adds the import statement which allow you to access host definitions in the interface body of an interface block; see help for the import statement for more details.

Steven_L_Intel1
Mitarbeiter
3.370Aufrufe
netphilou31
Neuer Beitragender III
3.370Aufrufe

Thanks a lot for this advices, I will definitely try this as soon as possible.

Best regards,

netphilou31
Neuer Beitragender III
3.370Aufrufe

Steve,

Reading your blog on the "Domestic of imported?" was really a pleasure, I will try the IMPORT declaration in my chocolate Oups interface definition.

Have a nice week end.

Antworten