Re: Объявление глобаль ных переменных в c.
On Sat, May 06, 2006 at 10:37 +0400, Stanislav Maslovski wrote: Погоди, в чем проблема? По симптомам похоже, что в network.h у тебя переменная не объявляется (declare), а определяется (define). То есть, в network.h ты пишешь: int PORT; вместо extern int PORT; Вот именно. Вот пример как надо: === Makefile === test: test.o main.o = === test.h === extern int t; int test(); === === test.c === #include test.h int t=0; int test() { return t; } === === main.c === #include test.h main() { t=100; printf(%d=%d, test(), t); } Спасибо - уже работает - так оно оказывается и лечится - просто до этого был маленький опыт работы с глобальными переменными. Думал, что если напишу в network.h int Port; то всё будет работать. signature.asc Description: Digital signature
Re: Объявление глобаль ных переменных в c.
On Fri, May 05, 2006 at 17:21 +0400, Artem Chuprina wrote: extern пишется в хедере. А без extern - в .c. Ровно одном. Вероятнее всего, в network.c. Благодарю - заработало. Если подумать, то в принципе даже логично ;) Но вообще так делать без КРАЙНЕЙ необходимости не рекомендуется. Разве что у тебя эта переменная - константа. Переменная костанта(каламбур). Просто ещё один человек пишет server и ему почему-то сильно не понравилось, когда я прописал порт через define. Аргументацию я так и не понял... signature.asc Description: Digital signature
Re: Объявление глобаль ных переменных в c.
On Fri, May 05, 2006 at 23:00 +0200, Anton Petrusevich wrote: On Friday 05 May 2006 15:21, Artem Chuprina wrote: Но вообще так делать без КРАЙНЕЙ необходимости не рекомендуется. Разве что у тебя эта переменная - константа. Это ещё почему? КРАЙНЯЯ необходимость может быть продиктована просто некоторым удобством решения конкретной задачи, мы ж не знаем что там за задача. А про религиозное в программе не должно быть глобальных переменных лучше не надо. Меня, например, напрягает передавать каждому объекту ссылку на объект, который ведёт лог программы. Ну здесь в принципе вопрос в здравом смысле. Чем меньше этих переменных будет, тем лучше. Особенно если это не константа, и какая-то функция догадается её поменять не сговариваясь с осталными, то ошибку потом можно искать годами Но это не должно делать из глобальных переменных табу. Кое-где они действительно очень удобны, если код не вылазиет за рамки двух трёх тысяч строк. signature.asc Description: Digital signature