-qbindcextname

カテゴリー

移植性とマイグレーション

目的

-qextname オプションが BIND(C) エンティティーに影響するかどうか制御します。

構文

構文図を読む構文図をスキップする
        .-bindcextname---.   
>>- -q--+-nobindcextname-+-------------------------------------><

@PROCESS:

@PROCESS BINDCEXTNAME | NOBINDCEXTNAME

デフォルト

-qbindcextname

使用法

-qextname オプションおよび BIND(C) 属性は、C での使用を可能にするため、Fortran のグローバル・エンティティーの名前を変更する 2 つの方法です。

NAME= 指定子を使用して、インターフェース・ブロックに BIND(C) バインディング・ラベルを 明示的に指定した場合、コンパイラーは、-qextname および -qbindcextname オプションに関係なく、 プロシージャーへの呼び出しでこのバインディング・ラベルを使用します。

NAME= 指定子を使用して、BIND(C) バインディング・ラベルを インターフェースが明示的に指定しない場合、コンパイラーは暗黙的なバインディング・ラベルを作成します。-qextname オプションも指定した場合、 コンパイラーは -qbindcextname オプションが有効な場合のみ、暗黙的なバインディング・ラベルに下線を付加します。

BIND(C) プロシージャーを宣言するコンパイル単位に対して -qextname および -qbindcextname オプションを 指定した場合、バインディング・ラベルが明示的に指定されていても、コンパイラーはそのバインディング・ラベルに下線を付加します。

注:
  • BIND(C) エンティティーの名前が同じであるかどうか確認する必要があります。 これによって、同じ BIND(C) エンティティーで明示的に指定されているバインディング・ラベルのないものに 2 つのコンパイル単位が アクセスした場合、1 つの単位に -qbindcextname オプションを指定し、 もう一方に -qnobindcextname オプションを指定してコンパイルしてはなりません。
  • -q[no]bindcextname オプションは、 -qextname オプションも指定された場合にのみ有効です。-qextname オプションが 名前付きエンティティーのリストで指定された場合、-q[no]bindcextname オプションは、これらの名前付きエンティティーのみに影響を 及ぼします。

interface
    integer function foo() bind(c)
    end funciton
    integer function bar()
    end function
end interface

print *, foo()
print *, bar()
end

xlf90 x.f -qextname -qbindcextname         # calls "foo_", and "bar_"
xlf90 x.f -qextname -qnobindcextname       # calls "foo", and "bar_"
xlf90 x.f -qextname=foo -qbindcextname     # calls "foo_", and "bar"
xlf90 x.f -qextname=foo -qnobindcextname   # calls "foo", and "bar"
xlf90 x.f                                  # calls "foo", and "bar"
xlf90 x.f -qnobindcextname                 # calls "foo", and "bar"

関連情報