Derived type in interface definitions

Derived type in interface definitions

Ritratto di netphilou31

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,

AllegatoDimensione
Scarica source.zip1.64 KB
5 post / 0 new
Ultimo contenuto
Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione
Ritratto di MarkLewy

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.

Ritratto di Steve Lionel (Intel)
Steve
Ritratto di netphilou31

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

Best regards,

Ritratto di netphilou31

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.

Accedere per lasciare un commento.