2

Fortran ISO_C_BINDING モジュールの概念は、C/C++ コンパイラ ベンダーでもサポートされていますか? たとえば、C/C++ のサイズは、intさまざまなベンダーのコンパイラによって異なる場合があります。したがって、ISO_C_BINDING モジュールを使用すると、FortranC_INT型が 4 バイトであることがわかります。しかし、一般的intC/C++の のサイズはまだわかっていません。私は正しいですか?おそらく、標準の C/C++ ISO_C_BINDING 互換のコンパイラ スイッチはありますか?

4

2 に答える 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 に答える