Derived type in interface definitions

Derived type in interface definitions


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,

下载 source.zip1.64 KB
5 帖子 / 0 全新

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.

Steve - Intel Developer Support

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

Best regards,


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.