Derived type in interface definitions

Derived type in interface definitions

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,

AnexoTamanho
Download source.zip1.64 KB
5 posts / novo 0
Último post
Para obter mais informações sobre otimizações de compiladores, consulte Aviso sobre otimizações.

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,

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.

Faça login para deixar um comentário.