私のCライブラリにはいくつかのオプション機能があり、automakeを使うことで、設定するフラグを提供することでそれらをオン/オフすることができます。パブリックヘッダファイルに条件文を入れるのは良い方法ですか?
機能がオフの場合、その機能はコンパイルされません。
しかし、私の質問は、その場合にも関数のプロトタイプをパブリックヘッダから削除する必要がありますか?
コンパイルされていない関数のプロトタイプを作成するのは良い考えではないようですが、でもは、ライブラリの設定によって異なるパブリックヘッダをインストールすることをお勧めしません。 (config.h
をパブリックヘッダディレクトリにインストールするのは悪い習慣と同じです。)
オプションの機能については、パブリックヘッダにはどのような方法が最適ですか?ユーザーが無効な機能を使用しようとすると、コンパイル時またはリンク時にエラーが発生しますか?このような状況では、標準的な練習が必要です。 (私は複数のアイデアがある場合はGNUコーディング標準に準拠することを好むが、私はこの問題に関するGNUの標準を知らない。)
Iそれは良い私だと思う関数が定義されていない場合は、プロトタイプを含めないようにしてください。そうすれば、リンク時ではなくコンパイル時にエラーが見つかるようになりますが、これに関する標準的な習慣はわかりません。 #ifを使用します。 –
@VaughnCatoプロトタイプがプリプロセッサディレクティブによって除外されていると、コンパイラエラーが発生します。 –
@LuchianGrigoreはい、正確です。 –