Люди я кричу, потому, что не могу больше!!! Помогите найти в исходниках глюк. Пишу текстовую игру на Borland C++ 3.1 Всё в одном файле на 253kb (=6500 строк) Когда компилю ругается и говорит, что "Too much global defined."
Объясните, что за фигня. Игра-то класная. Почти написал. Очень жалко бросать такой труд. Помогите, кто чем может. Пошлите мне письмо с советом или какой-то помощью. Я даже исходники дам. Лишь бы баг исправить. Очень прошу!!!
Заранее спасибо!
Неактивен
Это, часом, не переполнение буфера из-за слишком большого числа глобальных переменных?
Подтверждение мысли:
"Too much global data defined in file
В файле объявлено слишком много глобальных данных
Сумма объявленных глобальных данных превысила по размеру 64К. Проверьте объявления массивов, которые могут быть причиной выхода за пределы памяти. Либо реорганизуйте программу, либо, если все объявления вам нужны, используйте переменные far."
Взято отсюда: http://www.referat.su/refs_new/19327/ref_part_120.shtml
P.S. Извиняюсь, я в C++ — чайник...
Неактивен
haM3r написал:
Люди я кричу, потому, что не могу больше!!! Помогите найти в исходниках глюк. Пишу текстовую игру на Borland C++ 3.1 Всё в одном файле на 253kb (=6500 строк) Когда компилю ругается и говорит, что "Too much global defined."
Возможно, стоит попробовать отделить данные от кода в отдельный файл? Всё-таки, по-моему, 253 Кб многовато для исходника... И зачем всё делать в одном файле? Лучше будет разбить на модули.
Неактивен
Очевидный ответ на этот вопрос: переполнение какого-то из сегментов (скорее всего, сегмента глобальных данных, т.е. DGROUP или как там он назывался).
Какие у тебя есть в программе есть глобальные переменные (и особенно массивы)? Сколько они занимают совместно? Если их много (особенно массивов), нельзя ли от них избавиться? (Готов спорить на свою месячную зарплату, что избавиться можно без труда
И, кстати, что это за модель памяти — "самая большая"? LARGE, HUGE или может быть даже FLAT?
Неактивен
OOPS! Только сейчас пришла в голову очевидная мысль.
Игра, говоришь, текстовая? Т.е. содержит множество текстовых строк? Ну так текстовые строки в C вообще-то тоже являются статическими текстовыми массивами... Так что, если объем текста (вкупе с прочим) у тебя превысил 64K, ничего удивительного, что сегмент данных переполнился.
Неактивен
Мзда... :'( Урезал весь текст до минимума. Своими руками 25кб. (это одних только реплик) текста урезал. Теперь компилится, хорошо. Но, вот только начинаю писать код, как опять та же ошибка. Что делать? ???
Неактивен
Если ты категорически не хочешь резать код на куски, то единственный выход — переходить с Борланда на что-нибудь 32-битное. Если, конечно, совместимость с XT и AT не является жизненно важной.
Рекомендую попробовать DJGPP.
Неактивен
dennis написал:
Если ты категорически не хочешь резать код на куски, то единственный выход — переходить с Борланда на что-нибудь 32-битное.
Чувак! Переходи на Borland C++ Builder 5.0 или выше. Если ты создашь консольное приложение, то увидишь, что код скомпилиться без проблем. Не насилуй себя, урезая текст, есть более простые решения.
Неактивен
Это конечно хорошо перейти на Win32 консоль, но есть одна проблема - пробавал на Выжал Си 6.0. Он категорически не понимает функции textcolor, gettime, getdate, и тд, и тп.. Что делать в этом случае?
Неактивен
Насчёт работы с текстовым экраном VC++ 6.0 всё прекрасно понимают, но на уровне WinAPI. В составе исходников есть прекрасный пример. Если нужно, могу выложить...
Неактивен
Олег, спасибо за исходники, только я ничего в них не понял. Может быть у кого-нибудь есть процедуры(или идеи)
textcolor, clrscr, gettime, getdate для Visual C 6.0, очень нужно - игра на глазах гибнет. Поможите кто чем сможет. :'(
Неактивен