Что-то я пару дней ждал, пока отдохнёт мозг и начнёт снова программировать, но так и не дождался. А раз так, то я не стал пока переписывать алгоритм в консоли, занявшись исправлением багов. Пару багов удалось исправить.
Баги досадные, но неприятные. Почему-то компилятор clang не выдаёт ошибку, если указать функции вместо ссылки указатель и наоборот. Например функция:
void function(const Value& val);
Если сделать ошибку, и вызвать её вот так:
Value* p;
function(p);
То компилятор clang почему-то не ругается на это, но код генерит тоже неправильный. В результате получается баг, который сложно обнаружить не только визуально, но даже прогоняя программу в отладчике.
Данные почему-то в каком-то месте вдруг превращаются в кучу мусора. Возникает ощущение, что компьютер живёт какой-то собственной жизнью. При этом в компиляторе никаких ошибок или предупреждений.
В результате ты думаешь, что у тебя неправильно составлен алгоритм. Такое тоже встречается - и это самая частая ошибка, поэтому по привычке начинаешь искать именно такого рода ошибку. Смотришь в отладчике - раз, другой, третий, а там всё нормально, но программа то где-то вылетает, то выдаёт разные ошибки при одинаковом сценарии использования. В итоге ты находишь банальную опечатку. Но всё это отняло у тебя неделю. Нормально.
Комментариев нет:
Отправить комментарий