Вот решил посмотреть какие изменения нужно внести в исходный код, чтобы он скомпилировался под Windows.
Помимо макроса, указанного Gil Dogon, нужно закомментировать ещё парочку —
ASCII_ANIMATE и
MEASURE_TIME.
Также нужно добавить директиву
#include <ctype.h> и в двух местах заменить имя функции
snprintf на
sprintf_s.
А так как я пользуюсь компилятором Visual C++, то мне пришлось:
- изменить расширение исходного файла с .c на .cpp;
- указать тип возвращаемого значения int для функций my_bitind и main;
- указать тип возвращаемого значения void для функций level_init и level_reset;
- изменить тип возвращаемого значения с int на void для функции generate_deadlocks;
- изменить тип возвращаемого значения с void* на void для функции hash_clear;
- добавить явное приведение указателя типа void* к типу char*
char *sstring=(char*)MALLOC(nmoves+1);
/* . . . */
a->ptr=a->area=(char*)MALLOC(size);
- добавить прототип функции
int instate(uint32_t *s,int loc);
После этого программа успешно скомпилировалась, при этом компилятор выдал кучу предупреждений:
Код:
scorer.cpp(296): warning C4018: >: несоответствие типов со знаком и без знака
scorer.cpp(416): warning C4244: инициализация: преобразование "uint64_t" в "uint32_t", возможна потеря данных
scorer.cpp(417): warning C4244: return: преобразование "uint64_t" в "uint32_t", возможна потеря данных
scorer.cpp(481): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead.
scorer.cpp(484): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead.
scorer.cpp(487): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead.
scorer.cpp(490): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead.
scorer.cpp(493): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead.
scorer.cpp(750): warning C4101: i: неиспользованная локальная переменная
scorer.cpp(819): warning C4101: i: неиспользованная локальная переменная
scorer.cpp(876): warning C4101: j: неиспользованная локальная переменная
scorer.cpp(955): warning C4101: j: неиспользованная локальная переменная
scorer.cpp(999): warning C4101: loc: неиспользованная локальная переменная
scorer.cpp(1098): warning C4101: i: неиспользованная локальная переменная
scorer.cpp(1264): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead.
Кого это раздражает, сможет легко сделать необходимые изменения, но и без них программа должна работать. Впрочем, её работоспособность не проверял.