1

多くの静的メンバーを持つクラスがありますが、ヘッダー ファイルの途中に新しい関数を追加しました。

これはバイナリ互換性を壊しますか? クライアントを再コンパイルする必要がありますか?

編集 (1) : クラスには静的関数のみがあり、他の関数やデータ メンバーはありません

4

1 に答える 1

4

クラスには仮想関数がないため、新しい中間関数はv-tableを変更しません。クラス内の他の静的メンバー (関数およびグローバル変数/データ) は、Linux、Unix、または Mac で適切なシンボル名によって呼び出され、変更は下位互換性があります。

ただし、すべての関数は名前ではなく序数によって呼び出されるため、Windows では重大な変更です ( defファイルを使用して関数のカスタム序数を定義している場合を除く)。

ライブラリの下位バイナリ互換性を自動的にチェックするabi-ccツールを試してください。

于 2013-02-04T08:30:35.043 に答える