Estoy diseñando una API C que, entre otras cosas, tiene que proporcionar una manera de establecer algunas opciones de doble valor. Para identificar las opciones que utilizo la siguiente enumeración:¿Es una buena idea usar un parámetro enum en la función API pública en C?
typedef enum
{
OptionA,
OptionB,
...
} Option;
¿Es una buena idea usar Option
como un tipo de parámetro en una función de la API pública:
int set_option(Option opt, double value);
o es mejor utilizar int
vez :
int set_option(int opt, double value);
teniendo en cuenta que es posible que tenga que agregar más opciones en el futuro?
También hay buenos ejemplos de API existentes que demuestran cualquiera de los enfoques?
Requerir que el usuario recompile su código me preocupa más. ¿Hay alguna forma de evitarlo al agregar nuevas opciones en el primer enfoque (con enum como parámetro)? – vitaut
¿Por qué agregar nuevas opciones para una nueva compilación? El viejo código todavía funcionaría. Si desea acceder a la nueva característica, no es irracional solicitar una nueva compilación. Y si usaste y int en su lugar, entonces lo definirías como una constante en tu archivo de encabezado para que allí también haya una recompilación. –
Uno podría plantear el punto bastante obvio de que * para usar * el nuevo valor, uno tiene que cambiar y volver a compilar ese código de todos modos. Agregar un nuevo valor enum no requeriría la recompilación de ningún código existente. –