我正在設計一個C API,其中包括提供一些方法來設置一些雙值選項。爲了確定我用下面列舉的選項:在C中的公共API函數中使用枚舉參數是一個好主意嗎?
typedef enum
{
OptionA,
OptionB,
...
} Option;
它是在一個公共的API函數使用Option
作爲參數類型是一個好主意:
int set_option(Option opt, double value);
或者是它更好地使用int
代替:
int set_option(int opt, double value);
考慮到我將來可能需要添加更多選項?
也有沒有任何現有的API的例子可以證明這兩種方法?
要求用戶重新編譯他的代碼最讓我擔心。在第一種方法中添加新選項時(使用枚舉作爲參數)是否有辦法避免它? – vitaut 2012-02-02 20:27:57
爲什麼要爲重新編譯添加新選項?舊的代碼仍然可以工作。如果你想訪問新功能,那麼要求重新編譯並不是不合理的。如果你使用int來代替,那麼你應該在頭文件中將它定義爲一個常量,以便在那裏重新編譯。 – 2012-02-02 20:34:21
有人可能會提出一個相當明顯的觀點,即爲了*使用*新值,無論如何都必須更改並重新編譯該代碼。添加一個新的枚舉值不需要重新編譯任何現有的代碼。 – 2013-05-17 19:55:18