我正在设计一个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的任何好例子都能证明这两种方法吗?
答案 0 :(得分:7)
通过使用enum
,您可以有效地帮助您的函数用户知道可用的有效值。
当然缺点是无论何时添加新选项,您都需要修改标题,因此用户可能需要重新编译他的代码,而如果是int
则他可能不必这样做。
答案 1 :(得分:1)
Enums为您提供了编译时检查值是否合理的优势。然后,如果将来添加选项,则必须将新选项添加到新版本的头文件中。