インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
Fortran プロシージャーが C との互換性を保持するためには、次のように、明示的なインターフェイスを使用し、BIND 属性で宣言する必要があります。
BIND インターフェイスの例 |
---|
|
関数の場合、その結果はスカラーで、互換性がなければなりません。
プロシージャーには、グローバルなバインドラベルが関連付けられています。このラベルは、C プロセッサーで認識される名前です。デフォルトでは、Fortran の名前をすべて小文字にしたものです (必要に応じて先頭または最後に下線が追加されます)。例えば、上記の関数のバインドラベルは func です。次のように、別のバインドラベルを指定することもできます。
別のバインドラベルの例 |
---|
|
すべての仮引数に互換性がなければなりません。 さらに、Fortran ルーチンでスカラー仮引数に VALUE 属性が使用されているか、C ルーチンでこれらのスカラー引数をスカラー値へのポインターとして受け取っていなければなりません。 次の C 関数の呼び出しについて考えてみます。
C 関数の呼び出しの例 |
---|
int c_func(int x, int *y); |
ここで示すように、Fortran から c_func を呼び出すためのインターフェイスでは、x は VALUE 属性で渡す必要があります。y はポインターとして受け取られるため、VALUE 属性を使用することはできません。
Fortran の呼び出し例 |
---|
|
別の方法として、y を値渡しされる C_PTR として宣言することもできます。
ポインターを値渡しする例 |
---|
|