私はいくつかの二重の値を設定する方法を提供しなければならないC APIを設計しています。Cの公開API関数でenumパラメータを使用することをお勧めしますか?
typedef enum
{
OptionA,
OptionB,
...
} Option;
それが公共のAPI関数のパラメータ型としてOption
を使用することをお勧めします:
int set_option(Option opt, double value);
またはそれがより良い代わりにint
を使用することです、私は、次の列挙型を使用するオプションを識別するために、 :
int set_option(int opt, double value);
私は将来さらにオプションを追加する必要があると考えていますか?
いずれのアプローチを示す既存のAPIの良い例もありますか?
ユーザーにコードを再コンパイルすると、ほとんどのことが心配です。最初のアプローチ(enumをパラメータとして)で新しいオプションを追加するときに回避する方法はありますか? – vitaut
なぜ再コンパイルのための新しいオプションを追加するのですか?古いコードは引き続き動作します。新しい機能にアクセスしたい場合は、再コンパイルを依頼することは不合理ではありません。そしてあなたが代わりにintを使用した場合は、それをヘッダーファイルの定数として定義して、再コンパイルすることもできます。 –
新しい値を使用するためには、そのコードを変更して再コンパイルする必要があるという明白な点があるかもしれません。新しいenum値を追加しても、既存のコードを再コンパイルする必要はありません。 –