1

C++ コードを Fortran に統合しようとしています。型間の等価性に疑問を持っていますが、

Fortran integer*1は C++ boolと同等ですか?.そうでない場合、正しい C++ の同等の型は何ですか?

よろしくお願いします!

4

2 に答える 2

2

このリンクからの引用:

INTEGER(1)タイプは、-129から127の範囲内の正、負、およびゼロの整数値のみを持つ変数に対してメモリが貴重である場合に、大規模な配列に使用する必要があります。

だから、私はそれにC/C++相当するものはだと思いますsigned char。に相当するのboolはFortranのlogical型です。

編集:MSBの答えは私のものよりもはるかに優れています。あなたは彼が提案したことをするほうがずっといいです。

于 2012-05-07T10:00:19.200 に答える
2

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

PSコメントはint8_tの使用を示唆しています。Fortran 側で ISO C Binding と一致する型は C_INT8_T です。

于 2012-05-07T22:25:04.900 に答える