Глюки C ??
--------------
void make_crctable( void ) {
unsigned int i, j;
UCRC r;
for (i = 0; i <= 255; i++) {
r = i;
for (j = 8; j > 0; j--) {
if (r & 1) r = (r >> 1) ^ CRCPOLY;
else r >>= 1;
}
crctable = r;
}
}
-------------
если же я ее заменяю на
--------------
void make_crctable( void ) {
}
-------------
то все работает.
И Все это только во FreeBSD, в Windows и в SUSE Linux все работает и так, и так.
Интересно. А другой компилятор не пробывал?
Кстати мой старенький компилятор такое выражение не допускает:
if (r & 1) r = (r >> 1) ^ CRCPOLY;
else r >>= 1;
Только так:
if (r & 1) {r = (r >> 1) ^ CRCPOLY;}
else {r >>= 1;};