Проверка времени компиляции против нескольких типов в C?

В настоящее время у меня есть макрос, чтобы проверить значение типа.

#define CHECK_TYPE_INLINE(val, type) \
    ((void)(((type)0) != (0 ? (val) : ((type)0))))

Это полезно, чтобы иметь возможность проверять макросы в некоторых случаях.

Но что если я проверю несколько типов? например, чтобы проверить, является ли этоstruct Foo * или жеstruct Bar *.

Пример,

static inline _insert_item(struct List *ls, void *item) { /* function body*/ }

/* type-checked wrapper */
#define insert_item(ls, item) \
    (CHECK_TYPE_ANY(item, struct Foo *, struct Bar *), \
     _insert_item(ls, item))

Есть ли хороший способ сделать это?

Ответы на вопрос(2)

Ваш ответ на вопрос