|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.12.2011, 20:38 | #1 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
Разбиение программы, использующей SDL, на модули
Всем доброго времени суток!
Я начал писать графическую программу с использованием SDL. Я хотел разбить текст на несколько файлов (модулей), например: main.c - содержит главную функцию, инициализация и закрытие SDL систем graph.c - содержит необходимые графические функции algor.c - содержит алгоритм программы. Однако, я столкнулся со следующей проблемой (вполне естественной): при переносе функций из файла main.c в файл graph.c функции, в которых используется указатель на рабочую поверхность, перестают работать, т.к. указатель определен в другом файле. Я решил это, передавая указатель по ссылке. Определение указателя в файле main.c: Код:
Код:
Код:
Сегодня я взялся за продолжение этой программы, начал давно, и, насколько я помню, определение указателя как глобальной переменной ничего не давало, все равно пришлось реализовать передачу указателя через аргумент. Но самая мерзкая проблема кроется в другом. Насколько я понял, цвета можно задать таким образом: Код:
При использовании цветов где-то за пределами данной ф-ции программа компилируется и запускается, однако, на экране не появляется ничего. Я так понимаю, что цвета оказываются "никакими", т.е. перестают существовать, хотя идентификатор остается (скажите, пожалуйста, как это называется, потому что цвета "никакие" - просто смешно звучит, но не знаю, к сожалению, как это правильно называется). Модификатор "static" перед ними поставить не удается, компилятор сообщает об ошибке. Объявление их сначала как глобальных переменных (т.е. перечисление идентификаторов) тоже ничего не дает: цвета по-прежнему работают в пределах главной ф-ции, но не дают ничего вне ее. Задача: сделать цвета и указатель на рабочую поверхность видимыми как за пределами главной ф-ции в пределах этого файла, так и за пределами этого файла, т.е. видимыми ВЕЗДЕ. Понимаю, что звучит забавно это все, но я, правда, не знаю, как выйти из положения, мне совсем не смешно. Либо я не разбираюсь в зонах действия переменных, либо не понимаю чего-то в SDL (а я в нем практически ничего не понимаю), либо и то, и другое. Помогите, пожалуйста! На форуме явно есть люди, имеющие дело с SDL и наверняка нашли решение моей задачи. Спасибо за внимание! |
28.12.2011, 21:09 | #2 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
а цвет в функции в кач-ве параметра передавать ?
|
28.12.2011, 21:11 | #3 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
инициализировал в мейне, уже готовые передаёшь в заголовочные функции, что не так?
|
28.12.2011, 21:26 | #4 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
onewho, да, это работает, когда в этих функциях не указывается непосредственно идентификатор какого-либо цвета. Если же хочу в функции сделать выбор из цветов, или использовать конкретный цвет, например, так:
Код:
|
28.12.2011, 21:52 | #5 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
да? странно.
может у вас в другом ошибка? работает без кучи разных файлов? попробуй непосредственно тело функций вставить вместо вызова. по сути переменная int , какие м.б. проблемы с передачей |
28.12.2011, 22:17 | #6 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
onewho, если ставить непосредственно тело функции, то работает.
|
29.12.2011, 00:30 | #7 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
а параметр SDL_Surface *surface не изменяется в функции?
попробуй передать его по ссылке на указатель. |
29.12.2011, 01:15 | #8 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
onewho, ф-ии, которые находятся вне файла с главной функцией, его не видят.
|
29.12.2011, 01:25 | #9 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
Код:
|
29.12.2011, 01:44 | #10 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
onewho, а зачем это? У меня и без него работает. Я просто хочу использовать непосредственно указатель "screen" в телах ф-ий, а не передавать его как параметр. То же касается и цветов. Или я вас не понимаю?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разделение программы на отдельные модули (Паскаль) | Olya1 | Помощь студентам | 1 | 08.07.2011 11:25 |
Разбиение программы на модули | Neolit1819 | Общие вопросы C/C++ | 4 | 11.04.2011 19:14 |
разбиение программы на модули | SUDALV | Помощь студентам | 1 | 22.06.2010 22:01 |
Создание программы использующей ICQ протокол | SuBwooFer | Общие вопросы C/C++ | 1 | 17.01.2010 13:50 |
Рзработка модуля и программы использующей этот модуль (Delphi) | Sonny01 | Помощь студентам | 2 | 07.11.2009 17:26 |