Ну переписывать системные вызовы, я считаю не стоило, ибо только они "знают" как ИХ ОСь делает свои дела.
Я про другое писАл. У тя есть функция, которая ничего не валит если в ней нету тела. Так?
Значит глюк внутри функции.
Сначала я сделал бы так: (в моих текстах постоянно плюсы теряются )
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 ) {
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;
}
}
Плевать на результат - если main() получает управление можно сразу выходить по exit().
Продолжая таким образом, ты локализуешь область глюка.
Ну и не мешало бы глянуть, а нет ли функции с таким именем в подключенных библиотеках Фри. Черт его знает их компилер. У меня спарковский очень сильно местами не соответствует стандарту. И еще, ( спарковский так глючит ) не стОит собирать плюсовым компилером С-й код. Может и тут дырка.