I have the following function:

```c
typedef enum overrideType
{
    ovrBool,
    ovrFloat,
    ovrUint32,
} overrideType_t;

int override_New(const char name[], overrideType_t type, ...);

```

I would like the list of optional parameters to contain at least one item (even better if I could guarantee that it contains only one). Would it be possible to impose a set of allowed types as well?

Basically I would like to be able to write the following instructions:

```c
override_New("a", ovrBool, true);
override_New("b", ovrFloat, 4.0f);
override_New("c", ovrUint32, 5, "string"); /* this is tolerable but if it were possible to have a warning would be better */

```

but an error or at least a warning should be generated with the following:

```c
override_New("d", ovrFloat);

```

I'm fine with C11 with gcc extensions, attributes, using preprocessor features etc.