Проверка времени компиляции против нескольких типов в 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))
Есть ли хороший способ сделать это?