http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55465



--- Comment #12 from Fran Martinez Fadrique <fmartinez at gmv dot com> 
2012-11-27 09:49:20 UTC ---

After readign the standard carefully again (I have the formal version for f2k3,

not the draft for f2k8) I cannot really see how the need for the interfaces to

be unique can be derived. Regardless whether some compilers issue certains

messages or not; actually this is also just different interpretations of the

same text.



The propotype for SQLSetEnvAttr I do not think that realy matters for the

discussion but I have added at the end of this comment.



>From what I see, the interface need not be unique (I share the point with Juno)

The bahaviour that I would expect (and this is again just an interpretation) is

that for a definition of a Fortran interface, when invoked, a C function is

called based on the provided label (from the f2k3 'A reference to such a

procedure causes the function described by the C prototype to be called as

...'). Not mandatory to be always a different one; maybe.



15.4.1 Binding labels for procedures defines how a label must be defined and

behaves with respect to the defining fortran interface but it says nothing

about being unique.



In my case I have to invoke SQLSetEnvAttr with more than one represetnation of

the ValuePtr (this is because of the way in which the ODBC library behaves

internally; not very nice) and in the way I see the implementation once I need

the void * to behave as an integer and then as an actual pointer (c_ptr).



I'll try to find another way out of this, but the one I tried seem to be the

natural one.

I'll give c_intptr_t an opprtunity; it is not in my standard and I had not

consider it all (not awware of it actually).











SQLRETURN SQLSetEnvAttr(

     SQLHENV      EnvironmentHandle,

     SQLINTEGER   Attribute,

     SQLPOINTER   ValuePtr,

     SQLINTEGER   StringLength);



SQLHENV = void *

SQLINT = int

SQLPOINTER = void *

Reply via email to