シナリオ 1: 新しいライブラリ (libA) を自分のプログラムにリンクしたいのですが、libA は -std=gnu99 フラグを指定して gcc を使用してビルドされていますが、私のプログラムの現在のライブラリはそのオプションなしでビルドされています (gcc が -std= を使用すると仮定します)。デフォルトでは gnu89)。
シナリオ 2: libB は、"-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED" のようないくつかのプリプロセッサ フラグを使用してビルドされ、XPG4 機能 (たとえば、struct msghdr の msg_control メンバー) を有効にします。libC はこれらのプリプロセッサ フラグなしでビルドされたわけではありませんが、libB に対してリンクされています。
異なるプリプロセッサ フラグまたは C 標準でビルドされたライブラリをリンクするのは間違っていますか? 私の懸念は、主に構造定義の不一致に関するものです。
ありがとう。