Заметки для разработчика
В Общем
Благодаря переносу программы с С-- на С (почти с нуля), удалось очень качественно оформить код в едином стиле, убрать и заменить устаревший и дублируемый код, сократить кол-во временных переменных, ЗАКОММЕНТИРОВАТЬ почти ВСЁ, включая переменные, функции и их составные части, даже Логическую суть реализации.
Благодаря этому, чтение и понимание кода разработчиками (как старым, так и, возможно, новыми) не составит много труда, для последующей модификации программы.
Переменные
Описание главных переменных.
Тесты
Описание тестов с точки зрения разработчика:
- Определение Чувствительности (тесты 1-5);
- Работа с LPT-портом (тесты 1-5);
- Определение времен ОВЗ (тест 6).
Форматы файлов
DAT/PAR783
TXT (PowerGraph3)
Компиляция программы
Разработка программы (0.9+) на языке С/С++ осуществлялась в IDE
Code::Blocks (svn-70xx),
компиляция проводилась с помощью MinGW - это сборка GCC для Windows (v3.4.5).
Параметры компиляции
-O1 -match=i486 -fexpensive-optimizations -s - для этой программы, данный набор флагов генерирует наиболее ёмкий, понятный и эффективный КОД.
-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 - Эти параметры тоже не помешают, хотя и необязательны.
ВНИМАНИЕ:
Программа много-поточная, и поток lptThread() (когда он запущен) постоянно
проверяет переменную gStatus. При параметрах оптимизации выше -O1 (-O2 -O3)
у компилятора GCC 3.4.5 генерируется НЕПРАВИЛЬНЫЙ код, который лишь 1 раз читает
переменную, и потом ТОЛЬКО ПРОВЕРЯЕТ её - т.е. поток зомбируется, т.к. не видит
изменений этой очень важной переменной.
ОСОБО подчеркиваю, что использовалась версия компилятора GCC 3.4.5, а НЕ 4.х, т.к. файл получаемый версией 4.х - дополнительно требует для работы файл "libgcc_s_dw2-1.dll".
Первоначально, разработка С-версии (0.9) велась на С++, точнее сказать на С, но с использованием 2ух самописных классов (raFile и raMem). К моменту завершения работ над основным функционалом (0.9b15) собственные классы были заменены стандартными С-функциями работы с файлами и памятью.
Поэтому теперь - программа полностью соответствует стандарту языка С, версии С99.