Заметки для разработчика

В Общем

Благодаря переносу программы с С-- на С (почти с нуля), удалось очень качественно оформить код в едином стиле, убрать и заменить устаревший и дублируемый код, сократить кол-во временных переменных, ЗАКОММЕНТИРОВАТЬ почти ВСЁ, включая переменные, функции и их составные части, даже Логическую суть реализации.

Благодаря этому, чтение и понимание кода разработчиками (как старым, так и, возможно, новыми) не составит много труда, для последующей модификации программы.

Переменные

Описание главных переменных.

Тесты

Описание тестов с точки зрения разработчика:

Форматы файлов

      DAT/PAR
      783
      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.