インテル® Fortran プログラムからの C プロシージャーの呼び出し

命名規則

デフォルトでは、Fortran コンパイラーは関数名とサブプログラム名を、Linux* および Mac OS* X の場合は小文字に、Windows* の場合は大文字に変換します。しかし、C コンパイラーは大文字と小文字の変換を行いません。このため、Fortran プログラムから呼び出される C プロシージャーには、大文字と小文字を正確に使用して名前を付けなければなりません。例えば、次のような呼び出しの場合を考えてみます。

CALL PROCNAME()

C プロシージャーに、PROCNAME という名前を付けなければなりません。

X=FNNAME()

C プロシージャーに、FNNAME という名前を付けなければなりません。

最初の呼び出しでは、PROCNAME によって返される値は無視されます。2 番目の関数呼び出しでは、FNNAME は値を返さなければなりません。

Fortran と C プロシージャー間での引数の受け渡し

デフォルトでは、Fortran サブプログラムは引数を参照によって渡します。すなわち、Fortran サブプログラムは引数の値ではなく、実引数へのポインターを渡します。これに対して、C プログラムは値によって引数を渡します。このため、次の点に注意しなければなりません。

IA-32 アーキテクチャー・ベースの Windows* システムの場合に限り、デフォルトの呼び出し規約を変更することができます。/iface:stdcall オプション (stdcall) または /iface:cvf オプション (Compaq* および Powerstation 互換) を使用して、デフォルトの呼び出し規約を変更するか、ATTRIBUTES 宣言子を使用して、明示的なインターフェイス内の VALUE または C 属性を変更することができます。ATTRIBUTES 宣言子に関する詳細は、「Intel® Fortran Language Reference」(英語) を参照してください。

これらのオプションは、コンパイルされたルーチンおよびそれが呼び出すルーチンの外部シンボル名に @<n> を追加します (n はすべてのパラメーターのバイト数を表しています)。これらのオプションは、この方法でコンパイルされた Fortran ルーチンから呼び出されるすべてのルーチンが独自にスタックのクリーンアップ "callee pops" を行うと仮定します。また、/iface:cvf は、CHARACTER 変数の渡し方を変更します。/iface:cvf を使用することで、CHARACTER 変数はアドレスと長さのペアで渡されます (すなわち /iface:mixed_str_len_arg です)。


このヘルプトピックについてのフィードバックを送信

© 1996-2010 Intel Corporation. 無断での引用、転載を禁じます。