C 言語と Fortran の混在 第弐弾2010年01月05日 17時25分40秒

C 言語と Fortran の関数呼び出しの違いは三つ。そして、二つ目は関数の引数の受渡し方。

C 言語のは「全ての引数は値渡し」で行なわれる。そのため、引数で渡した「値」を変更しても呼び出し側は変更の内容を見ることは出来ない。そのため、関数に引数を変更する副作用が欲しい場合は、値のアドレスを渡し、それへの参照を行なうことで参照渡しを疑似している。

Fortran では「全ての引数は参照渡し」で、実際に受け渡す値は「広域変数を通して行なわれる。」

C 言語から Fortran の関数を呼ぶ時は、Fortran の間数名に下線を付ける。Fortran から C 言語の関数を呼ぶ為には、C 言語の関数に下線を付けて命名する。

例えば、fthree を Fortran の関数として作る。


* Fortran function()
       integer function addone(value)
       integer value
            addone = value + 1
       end

C 言語の主関数から呼び出す。関数名の最後に下線を付ける。必ず参照渡しにする。

/* C */
int main()
{
    int two = 2;
    int three = addone_(&two);
}

今度は、addone を C 言語の関数として作る。この関数名には下線を付けておく。


/* C */
int addone_(int* value)
{
    return *value + 1;
}

Fortran で cthree を呼ぶ時には、関数名の下線は必要無い。

* Fortran function
       program main
           integer two
           integer three
           two = 2
           three = addone(two)
       end program main

前回次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2010/01/05/4795963/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。