8

C 仕様の違いに関連する多くのことについて、私は疑問を持っています。

C99 でライブラリをプログラミングした場合、C89 コードから使用できますか? (C89 準拠の定義を持つ関数のみを使用)。

たとえば、このコードは C89 で使用できますか?

共有ライブラリのヘッダー:


#ifdef C99
 void func (double complex a, double complex b); // C99 function
#endif

 /* another C89 compliant function */
 void func2 (double a, double b);

前もって感謝します :)

4

2 に答える 2

8

C言語は、C89コードとC99コードのバイナリ互換性については何も述べていません。これは、実行可能ファイルのさまざまな部分に使用するコンパイラに完全に依存します。

ライブラリの外部ヘッダーをC89コンパイラに適したものにすることができれば、2つのコンパイラが互換性のあるコードを生成できることを確認するという通常の問題を除いて、それが機能しない明確な理由はわかりません。

于 2010-12-30T16:46:27.410 に答える
2

の代わりに、または類似のもの#ifdef C99を使用します。#if __STDC_VERSION__ > 199900L

于 2010-12-30T17:18:12.733 に答える