Fortran ISO_C_BINDING モジュールの概念は、C/C++ コンパイラ ベンダーでもサポートされていますか? たとえば、C/C++ のサイズは、int
さまざまなベンダーのコンパイラによって異なる場合があります。したがって、ISO_C_BINDING モジュールを使用すると、FortranC_INT
型が 4 バイトであることがわかります。しかし、一般的なint
C/C++の のサイズはまだわかっていません。私は正しいですか?おそらく、標準の C/C++ ISO_C_BINDING 互換のコンパイラ スイッチはありますか?
質問する
702 次
2 に答える
5
私の知る限り、標準は同じツールチェーン内の一致するタイプのみを要求します。したがって、同じベンダーの C コンパイラを使用することをお勧めします。標準は、C_ 種類のサイズについては何も主張していないと思います。
編集:標準で調べただけで、常にコンパニオンCコンパイラについて話しています。
于 2012-02-12T11:27:35.007 に答える
2
ほとんどのオペレーティング システムは C API を公開しています。これは明らかに、そのプラットフォームに標準の C ABI が存在することを意味します。通常、C コンパイラはこの ABI を使用しますが、いくつかの特殊性がある場合があります (たとえば、Windows API の標準呼び出し規約は stdcall であり、可変引数関数をサポートしていないため、cdecl と呼ばれる 2 つ目の主要な呼び出し規約があります)。
C++ の状況はそれほど明確ではありません: ほとんどのオペレーティング システムは C++ API を公開していません (BeOS/Haiku のような例外があります)。ベンダー間で、場合によっては同じコンパイラの異なるバージョン間でさえ。少なくとも GCC は C++ ABI を安定させたと思いますが、一般的な状況についてはわかりません...
于 2012-02-12T12:42:45.033 に答える