2012-05-07 3 views
1

FortranにいくつかのC++コードを統合しようとしています。 は私がFortranとC++コードを統合するクエリ

はブール C++ に相当Fortranの整数* 1で、タイプ間の等価性と疑いを持って?¿ない場合は、正しいC++同等のタイプは何ですか?¿

中ありがとうございました前進!

答えて

2

this linkから引用:

INTEGER(1)メモリは負、正のみ有することになる変数のプレミアムは にあるとき、大きなアレイのために使用されるべき入力、及び ゼロ整数値以内-129から127の範囲です。

したがって、C/C++と同等の数値は、signed charとなります。 boolに相当するのは、Fortranのlogicalタイプです。

EDIT:M.S.B.の答えは私の方法よりも優れています。あなたは彼が提案したことをやっているほうが良い。

+0

ok、おかげさまで私は混乱しました。私は 'char'で試してみるつもりです。 – horstmann

+0

マルチバイトの 'char'-sを持つシステムが存在する可能性があるので、同等のものは' int8_t'です。 –

+0

ああ、intX_t型については知りませんでした、ありがとう! –

2

Cタイプに一致するタイプを提供するFortran ISO_C_Bindingを使用することをお勧めします。そのアプローチはコンパイラとプラットフォームに依存しません。私はC++の型についてあまり確かではありませんが、あなたがCの同等のものを確信しているなら、あなたは良いはずです。 ISO_C_BindingはFortran型C_BOOLを使用して、C型_Boolに一致します。バインディングは、同等の型の長いリストを提供します。一覧が表示される1つの場所は、gfortranマニュアルの「組み込みモジュール」の章にあります。また、「混合言語プログラミング」の章も参照してください。 Fortran 2003の言語標準の一部としてgfortranのマニュアルを引用してきましたが、これらの機能はコンパイラに特有のものではありません。

P.S.コメントは、int8_tの使用を示唆しています。 Fortran側でISO Cバインディングを使用するマッチングタイプはC_INT8_Tです。