Люди я кричу, потому, что не могу больше!!! Помогите найти в исходниках глюк. Пишу текстовую игру на Borland C++ 3.1 Всё в одном файле на 253kb (=6500 строк) Когда компилю ругается и говорит, что "Too much global defined."
Объясните, что за фигня. Игра-то класная. Почти написал. Очень жалко бросать такой труд. Помогите, кто чем может. Пошлите мне письмо с советом или какой-то помощью. Я даже исходники дам. Лишь бы баг исправить. Очень прошу!!!
Заранее спасибо!
Неактивен
Очевидный ответ на этот вопрос: переполнение какого-то из сегментов (скорее всего, сегмента глобальных данных, т.е. DGROUP или как там он назывался).
Какие у тебя есть в программе есть глобальные переменные (и особенно массивы)? Сколько они занимают совместно? Если их много (особенно массивов), нельзя ли от них избавиться? (Готов спорить на свою месячную зарплату, что избавиться можно без труда
И, кстати, что это за модель памяти — "самая большая"? LARGE, HUGE или может быть даже FLAT?
Неактивен
OOPS! Только сейчас пришла в голову очевидная мысль.
Игра, говоришь, текстовая? Т.е. содержит множество текстовых строк? Ну так текстовые строки в C вообще-то тоже являются статическими текстовыми массивами... Так что, если объем текста (вкупе с прочим) у тебя превысил 64K, ничего удивительного, что сегмент данных переполнился.
Неактивен
Вообще-то сжимать текст необязательно.
Лучше разбить файл на модули с примерно одинаковым объемом текста, и компилировать их раздельно. Модель при этом должна быть HUGE.
Неактивен
Если ты категорически не хочешь резать код на куски, то единственный выход — переходить с Борланда на что-нибудь 32-битное. Если, конечно, совместимость с XT и AT не является жизненно важной.
Рекомендую попробовать DJGPP.
Неактивен
То, что сказано выше, это тоже вариант. Правда, консольные приложения Win32, естественно, не пойдут под простым DOS. Подозреваю, что досовские программы Builder 5.0 не создает вообще.
Неактивен