在C中的公共API函数中使用枚举参数是一个好主意吗?

时间:2012-02-02 20:19:43

标签: c api enums api-design

我正在设计一个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的任何好例子都能证明这两种方法吗?

2 个答案:

答案 0 :(得分:7)

通过使用enum,您可以有效地帮助您的函数用户知道可用的有效值。 当然缺点是无论何时添加新选项,您都需要修改标题,因此用户可能需要重新编译他的代码,而如果是int则他可能不必这样做。

答案 1 :(得分:1)

Enums为您提供了编译时检查值是否合理的优势。然后,如果将来添加选项,则必须将新选项添加​​到新版本的头文件中。