Ради интереса набросал ваш пример для "tcc" и получил вполне
разумное предупреждение, но гораздо раньше: test.c:6: warning: assignment makes integer from pointer without a cast
test.c:6: warning: assignment makes integer from pointer without a cast
test.c:6: warning: assignment makes integer from pointer without a cast
test.c:6: warning: assignment makes integer from pointer without a cast
test.c:6: warning: assignment makes integer from pointer without a cast
#include <stdio.h>
void main(void)
{
unsigned short v1 = 1, v2 = 2, v3 = 3, v4 = 4, v5 = 5;
const unsigned long t[] = { &v1, &v2, &v3, &v4, &v5 };
#define LEN sizeof(t) / sizeof(t[0])
unsigned short a[LEN];
for(int i = 0; i < LEN; i++)
{
a[i] = *((unsigned short*)t[i]);
printf("a[%d] = %u\n", i, a[i]);
}
}