インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

iface

アプリケーションのデフォルトの呼び出し規約と引数渡し規則を指定します。

構文

Linux* および macOS*:

なし

Windows*:

/iface:keyword

引数

keyword

呼び出し規約または引数渡し規則を指定します。設定可能な値は以下のとおりです。

default

デフォルトの呼び出し規約を使用します。

cref

C 呼び出し規約または REFERENCE 呼び出し規約を使用します。

cvf

Compaq* Visual Fortran と互換性のある呼び出し規約を使用します。この値は、Windows* システムでのみ利用できます。

[no]mixed_str_len_arg

文字長が隠された文字引数に対して使用する引数渡し規則を指定します。

stdcall

STDCALL 呼び出し規約を使用します。

stdref

STDCALL 呼び出し規約または REFERENCE 呼び出し規約を使用します。

デフォルト

/iface:default

デフォルトの呼び出し規約が使用されます。

説明

このオプションは、アプリケーションのデフォルトの呼び出し規約と引数渡し規則を指定します。

このオプションによって制御される呼び出し規約と引数渡し規則は、次のとおりです。

ATTRIBUTES コンパイラー・ディレクティブを使用して、これらの規則を個別に変更することもできます。ATTRIBUTES ディレクティブの動作は、同じ名前を持つ iface オプションの動作と常に同じとは限りません。

オプション

説明

/iface:default

デフォルトの呼び出し規約を使用します。これらの規則は次のとおりです。

  • 呼び出しメカニズム: C

  • 引数渡しメカニズム: 参照渡し

  • 文字長引数渡し: 引数リストの最後

  • 外部名の大文字/小文字: 大文字

  • 名前の修飾: IA-32 アーキテクチャーでは、プリフィクスに下線を使用します。インテル® 64 アーキテクチャーでは、プリフィクスはありません。

/iface:cref

外部名が小文字であることを除き、/iface:default と同じ規則を使用します。

/iface:cvf

Compaq Visual Fortran および Microsoft* Fortran PowerStation と互換性のある呼び出し規約を使用します。このオプションは、Windows* システムでのみ利用できます。これらの規則は次のとおりです。

  • 呼び出しメカニズム: STDCALL (IA-32 アーキテクチャー・ベースの Windows* システム)

  • 引数渡しメカニズム: 参照渡し

  • 文字長引数渡し: 引数アドレスの後

  • 外部名の大文字/小文字: 大文字

  • 名前の修飾: IA-32 アーキテクチャーでは、プリフィクスに下線を使用します。インテル® 64 アーキテクチャーでは、プリフィクスはありません。IA-32 アーキテクチャー・ベースの Windows* システムでは、サフィックスに @n を使用します。n は、プロシージャーが終了したときにスタックから削除するバイト数です。ほかのシステムでは、サフィックスはありません。

/iface:mixed_str_len_arg

文字長が隠された文字引数に対して使用する引数渡し規則を指定します。このオプションは、文字引数の隠された文字長を、引数リストの対応する文字引数の直後に置くようにコンパイラーに指示します。

この手法は、Compaq Visual Fortran で使用されています。文字引数の受け渡しを行う言語が混在したプログラムを移植するときには、このオプションを正しく指定するか、ソースコード内で隠された文字長を持つ文字引数の順序を変更する必要があります。このオプションは、ほかの /iface オプションと一緒に使用することができます。

/iface:stdcall

次の呼び出し規約を使用します。

  • 呼び出しメカニズム: STDCALL

  • 引数渡しメカニズム: 値渡し

  • 文字長引数渡し: 引数リストの最後

  • 外部名の大文字/小文字: 大文字

  • 名前の修飾: IA-32 アーキテクチャーでは、プリフィクスに下線を使用します。インテル® 64 アーキテクチャーでは、プリフィクスはありません。IA-32 アーキテクチャー・ベースの Windows* システムでは、サフィックスに @n を使用します。n は、プロシージャーが終了したときにスタックから削除するバイト数です。ほかのシステムでは、サフィックスはありません。

/iface:stdref

引数が参照渡しされることを除き、/iface:stdcall と同じ規則を使用します。

注意

Windows* システム上では、/iface:cref オプションを指定するとデフォルトの外部名が上書きされ、小文字になります。外部名に対して "!dir$ attributes c, reference" を指定するのと同じです。

/iface:cref オプションを指定し、さらに外部名を大文字にする場合は、/names:uppercase オプションを明示的に指定しなければなりません。

注意

IA-32 アーキテクチャー・ベースのシステムでは、呼び出し側のプログラムと呼び出される側のプロシージャーの呼び出しメカニズム (C または STDCALL) が一致していなければなりません。そうでない場合、予期しないエラーが発生することがあります。デフォルトのメカニズムを STDCALL に変更する場合、ATTRIBUTES DEFAULT ディレクティブを使用して、次のプロシージャーの呼び出し規約をリセットする必要があります。

  • 派生型の FINAL プロシージャーとして指定されているプロシージャー

  • OPEN 文で USEROPEN プロシージャーとして指定されているプロシージャー

  • 可変書式の式で参照されるプロシージャー

  • IFPORT モジュールから QSORT ライブラリー・ルーチンに渡される比較ルーチンとして指定されているプロシージャー

  • IFLOGM モジュールでダイアログ・コールバック・プロシージャーとして使用されるプロシージャー

  • IMSL* ライブラリーの呼び出しでコールバック・プロシージャーとして使用されるプロシージャー

  • C の呼び出し規約を仮定するほかのコンテキストや言語から呼び出されるプロシージャー

[Extract Compaq Visual Fortran Project Items (Compaq Visual Fortran プロジェクト項目の抽出)] ウィザードを使用してインポートした Visual Studio* プロジェクトには、STDCALL をデフォルトの呼び出し規約に設定する /iface:cvf が自動適用されます。

IDE オプション

Visual Studio*: [External Procedures (外部プロシージャー)] > [Calling Convention (呼び出し規約)] (/iface:{cref|stdref|stdcall|cvf|default})

[External Procedures (外部プロシージャー)] > [String Length Argument Passing (文字長引数渡し)] (/iface:[no]mixed_str_len_arg)

Eclipse*: なし

Xcode*: なし

代替オプション

/iface:cvf

Linux* および macOS*: なし

Windows*: /Gm

/iface:mixed_str_len_arg

Linux* および macOS*: -mixed-str-len-arg

Windows*: なし

/iface:nomixed_str_len_arg

Linux* および macOS*: -nomixed-str-len-arg

Windows*: なし

/iface:stdcall

Linux* および macOS*: なし

Windows*: /Gz