Файл include/linux/typecheck.h
ядра Linux 4.16 содержит этот код.
#define typecheck(type,x) \
({ type __dummy; \
typeof(x) __dummy2; \
(void)(&__dummy == &__dummy2); \
1; \
}
, который проверяет, имеет ли x
тот же тип, что и параметр type
.
Но я не могу понять строку:
(void)(&__dummy == &__dummy2);
Как помогает сравнение первого адреса обеих переменных?