C言語の定数(アプリケーションのエラーコードを表す)を宣言したいとします。どのようにファイルに分割しますか?外部ファイルでenumを使用してインクルードしますか?ベスト定数c規約
おかげで、 ジェームズ
C言語の定数(アプリケーションのエラーコードを表す)を宣言したいとします。どのようにファイルに分割しますか?外部ファイルでenumを使用してインクルードしますか?ベスト定数c規約
おかげで、 ジェームズ
はい、.hファイル内の#defineまたは列挙型を移動するための方法です。列挙型は、gdbのようなデバッガでデバッグする場合に便利です。数値よりもわかりやすい値が表示されるからです。
値のセットであれば、ヘッダーファイルで宣言された列挙型で十分です(#definesを使用する人もいますが、値は問題ではないので列挙型はこの場合は問題ありません)。単にエラーコードと比較したいのであれば、これは良い方法です。
関連する数値のセットの場合は、enum
が正しいアプローチです。値がC文字列であるか、あるいはenum
で表現できない場合(またはそれらが有意義な関連値のセットを形成しない場合)、2つの方法のいずれかを使用できます。
プリプロセッサ#define
ステートメントを使用するか、extern const
-marked変数を使用してください。前者はコンパイル時に解決されるため、配列の長さを指定するために、または使用時に積極的にコードを呼び出すために使用することができます。ただし、後者の場合は、定数を使用するすべてのファイルを再コンパイルせずに定数の値を変更することができます(.hファイルではなく.cファイルで指定します)。
extern const
-marked変数は、このように変更することができるため、多くのプロジェクトで再利用されるコードやライブラリとして配布されるコードに適しています。プログラムを強制的に再コンパイルすることなく、ライブラリに対する変更が可能になります。