Например TDA7294

Форум РадиоКот • Просмотр темы - Нескольно простых вопросов о программировании AVR на Си.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн сен 15, 2025 10:53:52

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1478 ]     ... , , , 12, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт сен 24, 2015 05:46:36 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 674
Откуда: Пермь
Рейтинг сообщения: 0
Подскажите пожалуйста.
При объявлении в cpp-шном проекте в Atmel Studio 6.2
Код:
#define FIFO( size )\
struct {\
   unsigned char buf[size];\
   unsigned char tail;\
   unsigned char head;\
}

FIFO(128) fifo;

получаю warning:
Код:
anonymous type with no linkage used to declare variable '<anonymous struct> fifo' with linkage [enabled by default]   

В чём ошибка?

_________________
Никакая контра не уйдёт от нас


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт сен 24, 2015 06:07:37 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4886
Откуда: Минск
Рейтинг сообщения: 1
Анонимная структура. Попробуйте дать ей какое-нибудь имя - поменять на struct fifo_t {, а дальше как есть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт сен 24, 2015 06:23:09 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 674
Откуда: Пермь
Рейтинг сообщения: 0
Большое спасибо, warning пропал :)

_________________
Никакая контра не уйдёт от нас


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт сен 24, 2015 14:44:14 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: 0
prinv писал(а):
Большое спасибо, warning пропал :)
Варнинг пропал, а грабли, подозреваю, остались...
Скорее всего, объявление
Код:
#define FIFO( size )\
struct {\
   unsigned char buf[size];\
   unsigned char tail;\
   unsigned char head;\
}
должно было выглядеть так:
Код:
#define FIFO( size )\
struct {\
   unsigned char buf[size];\
   unsigned char *tail;\
   unsigned char *head;\
}


Однако, присвоение структуре имени в макросе должно будет приводить к другому варнингу - "переопределение имени", так как каждый такой макрос будет раскрываться в повторное определение одной и той же структуры. Это тоже грабли, хотя и вид с боку.

#ifndef ? ... :roll: :) Прикалываюсь - решение другое, но не хочу портить удовольствие от самостоятельного осмысления задачи и ее решения... :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт сен 24, 2015 17:42:14 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
Pnjom-Penb писал(а):
должно было выглядеть так:
Код:
[...]
   unsigned char *tail;\
[...]

Ну будет поуниверсальнее в части большего размера буфера. А всё одно ведь остальной, не показанный нам, хак по доступу к членам этого, с позволения сказать, объекта упрятан в такие-же дефайны, что кстати и подтверждается нагугливанием исходной нетленки по фразе "//размер должен быть степенью двойки: 4,8,16,32...128" - так что ещё и их переписывать придётся - а зачем это вопрошающему? ;)

Pnjom-Penb писал(а):
Прикалываюсь - решение другое, но не хочу портить удовольствие от самостоятельного осмысления задачи и ее решения... :)))

Если компилер не будет ныть на переопределение идентичных по объявлению структур - то и жвачки хватит, чтобы имя на основе параметра сконь-струировать. ;)

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт сен 24, 2015 17:53:56 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
Кстати, раз уж я разбудился, то заметьте, что претензия то не к анонимности - а к [потенциальному] линкажу этой самой фифы́:

Код:
anonymous type with no linkage used to declare variable '<anonymous struct> fifo' with linkage [enabled by default]   


и можно ожидать, что объявление этой переменной как статической вероятно снимет претензию этого зануды-компилятора? Ну конечно если пользователь уже накидал прямых связей между модулями - нам неизбежно передадут особое мнение линкера на этот счёт, но, мне кажется, что всё-же "впиндюрим мы успешно". © п-к Ржевский. ;)

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 07:04:02 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 674
Откуда: Пермь
Рейтинг сообщения: 0
Siarzhuk писал(а):
а зачем это вопрошающему?

Вопрошающему была интересна причина возникновения warning и только, без далеко идущих выводов :)))

Мой вопрос фактически был "как правильно описать структуру в хидере?"

_________________
Никакая контра не уйдёт от нас


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 08:16:49 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
prinv писал(а):
Вопрошающему была интересна причина возникновения warning и только, без далеко идущих выводов :)))

Это понятно и, как по мне, весьма похвально с его стороны. ;) Вопрос же мой был больше к предлагающему улучшенную реализацию с предложением оценить трудозатраты на оную доработку.

prinv писал(а):
Мой вопрос фактически был "как правильно описать структуру в хидере?"

Правильность либо неправильность в некоторой мере задаёт и контекст использования. Если моё предположение про глобальную видимость верно - то объявление объекта статическим:

Код:
static FIFO fifo(128);


т.е. видимым только в этом модуле, должно снять претензии копилятора по линковке объектов анонимных структур. Интересно, кстати, отчего он вообще типом озаботился - проект CPP-шный что-ли?

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 08:53:22 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 674
Откуда: Пермь
Рейтинг сообщения: 0
Siarzhuk писал(а):
проект CPP-шный что-ли?

Был cpp-шный, уже с-шный :))

И сразу вопрос по коду из хедера:

Код:
struct str_fifo {
      char         value[FIFOSIZE];
      unsigned int   head;
      unsigned int   tail;
};
   
char   fifo_push(str_fifo *fifo, char data);


Получаю ошибку "unknown type name 'str_fifo"...

_________________
Никакая контра не уйдёт от нас


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 09:08:39 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4575
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Код:
typedef struct{
      char         value[FIFOSIZE];
      unsigned int   head;
      unsigned int   tail;
}str_fifo;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 09:20:27 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 1
prinv писал(а):
char fifo_push(str_fifo *fifo, char data);[/code]

Получаю ошибку "unknown type name 'str_fifo"...


В C нужно полностью указывать тип как "struct str_fifo". Или алиасить его typedef-ом как только что рассказал Alex.

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 10:25:28 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: 1
prinv писал(а):
Мой вопрос фактически был "как правильно описать структуру в хидере?"
Без дефайнов.
Siarzhuk писал(а):
Если компилер не будет ныть на переопределение идентичных по объявлению структур - то и жвачки хватит, чтобы имя на основе параметра сконь-струировать. ;)
С какого потолка взято утверждение, что структуры будут идентичными?
prinv писал(а):
Получаю ошибку "unknown type name 'str_fifo"...
Потому что имя типа здесь не "str_fifo", а "struct str_fifo":
Код:
char    fifo_push(struct str_fifo *fifo, char data);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 11:00:40 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
Pnjom-Penb писал(а):
Siarzhuk писал(а):
Если компилер не будет ныть на переопределение идентичных по объявлению структур - то и жвачки хватит, чтобы имя на основе параметра сконь-струировать. ;)
С какого потолка взято утверждение, что структуры будут идентичными?

"Жвачка" в данном случае - препроцессорная конкатенация корня имени структуры с параметром-размером, позволяющая сделать разные имена структур для разных размеров буфера. Для одинаковых размеров - структуры будут идентичны:
Код:
#define FIFO(__size)    \
struct tagFIFO##__size { \
  char buf[__size];     \
}

FIFO(10) fifo10;
FIFO(11) fifo11;
FIFO(12) fifo12;
FIFO(13) fifo13;
FIFO(13) fifo13x;

разворачивается в:
Код:
struct tagFIFO10 { char buf[10]; } fifo10;
struct tagFIFO11 { char buf[11]; } fifo11;
struct tagFIFO12 { char buf[12]; } fifo12;
struct tagFIFO13 { char buf[13]; } fifo13;
struct tagFIFO13 { char buf[13]; } fifo13x;

MSVC-шный компилер на последнюю строчку ругается, что, впрочем при вящем желании обходится тривиально. ;)

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 14:09:39 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: 0
Цитата:
Siarzhuk: Если компилер не будет ныть на переопределение идентичных по объявлению структур ...
Pnjom-Penb: С какого потолка взято утверждение, что структуры будут идентичными?
Siarzhuk: "Жвачка" в данном случае - препроцессорная конкатенация ...

Вы не на тот вопрос отвечаете - структуры НЕИДЕНТИЧНЫ! Потому и был задан вопрос - с чего это они представляются Вам идентичными, да еще с упором на некую очевидность этого...

И, кстати, ...
Siarzhuk писал(а):
Pnjom-Penb писал(а):
должно было выглядеть так:
Код:
[...]
   unsigned char *tail;\
[...]
Ну будет поуниверсальнее в части большего размера буфера.
... разница между объявлением указателей head и tail как "unsigned char" или как "unsigned char*" заключается вовсе не в бОльшем размере, который смогут обслуживать вторые, а в арифметике - арифметика указателей отличается от арифметики объектов, и объявлять указатели, как "unsigned char" - это те еще грабли.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 15:03:05 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
Pnjom-Penb писал(а):
Вы не на тот вопрос отвечаете - структуры НЕИДЕНТИЧНЫ!

т.е.
Код:
struct s1 {
  char buf[13];
};

struct s2 {
  char buf[13];
};

не идентичны? И в чём же разница, позвольте спросить?

Pnjom-Penb писал(а):
объявлять указатели, как "unsigned char" - это те еще грабли.

Вы в "источник вдохновения" откуда исходный дефайн был взят вообще заглядывали? Там указателями совсем не пахнет. Да даже и без этого очевидно-же - буфер и индексы.

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 17:50:59 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: 0
Siarzhuk писал(а):
Вы в "источник вдохновения" откуда исходный дефайн был взят вообще заглядывали? Там указателями совсем не пахнет.
Согласен, привычка давать имена "head/tail" именно указателям сыграла со мной шутку и я приписал ТСу свой ход мыслей.
А Ваши рассуждения о "большей универсальности в смысле размера" еще и укрепили меня в моей ошибке.

Если уж заговорили об источниках вдохновения, то хотелось бы узнать и об источнике Вашего тоже...
Итак, Вы предложили ТСу модификацию его макроса, "обезьянничающую" (mangling) имя структуры, приклеивая к ней размер массива, переданный, как параметр "struct fifo##__size ... fifo10; ... fifo11; ..."

В связи с этим, к источнику такого вдохновения возникают следующие вопросы:
1. Как так получилось, что для одного и того же размера (13) этот способ породил разные имена структур? Цитата:
Siarzhuk писал(а):
struct s1 ... struct s2 ... не идетичны?
2. Что делать ТСу, когда он, вызвав такой макрос дважды, с одинаковым параметром-размером, получит "те же яйца, только в профиль"? Вроде хотели уйти от повторяющихся объявлений, а пришли к ним же... Сильный ход!
3. Если компилятор в такой ситуации "не будет ныть", то получится, что программист будет думать, что завел две такие FIF'ы, а физически все обращения пойдут в одну!.. Как правильно назвать такие грабли - "граблища", или уж сразу "мастдайка"?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт сен 25, 2015 21:35:19 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
Pnjom-Penb писал(а):
Если уж заговорили об источниках вдохновения, то хотелось бы узнать и об источнике Вашего тоже...

[голосом Кирпича из фильма "Место встречи изменить нельзя"] -"Такой-зе как и у вас: http://mainloop.ru/c-language/simple-fifo.html" ;)

Pnjom-Penb писал(а):
1. Как так получилось, что для одного и того же размера (13) этот способ породил разные имена структур?

Это я вас методом "от противного" подловить хотел. ;) В реальности, как вы совершенно правильно заметили, тут как раз тот случай когда конкатенирующий манглинг не сработает - из чего я собственно и начал мечтать-размышлять вслух про идентичные структуры с одинаковым именем - мол мы объявляем тип, и тип этот бинарно идентичен предыдущему объявлению структуры с таким-же именем, и почему-бы компилятору не увидеть этот факт и не понять что это один и тот-же тип, мечты, мечты.... :) А вот, кстати, конкатенирование к имени структуры ещё и __LINE__ нас не спасёт?.

Код:
#define FIFO(__size) struct fifo##__size##__LINE__ {


Вроде ешё и __COUNTER__, помню, имеется.

Pnjom-Penb писал(а):
2. Что делать ТСу, когда он, вызвав такой макрос дважды, с одинаковым параметром-размером, получит ...

Я бы в одной строке объявил: FIFO(128) fifo1, fifo2, fifo3;

Pnjom-Penb писал(а):
получится, что программист будет думать, что завел две такие FIF'ы, а физически все обращения пойдут в одну!

Не, там же под дефайном только определение типа спрятано (на CPP-шные шаблоны смахивает, кстати) - а переменные (инстансы) мы уже сами в коде задаём разные - т.е. и работать мы будем с двумя разными переменными. Или вы не это имели ввиду? ;)

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Сб сен 26, 2015 08:43:19 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: 0
Siarzhuk писал(а):
Не, там же под дефайном только определение типа спрятано ...
Посмотрел начало этой подтемы:
Код:
#define FIFO( size )\
struct {\
   unsigned char buf[size];\
   unsigned char tail;\
   unsigned char head;\
}
FIFO(128) fifo;
Действительно, мне казалось, что объявление переменной также является частью дефайна.

Siarzhuk писал(а):
[голосом Кирпича из фильма "Место встречи изменить нельзя"] -"Такой-зе как и у вас: http://mainloop.ru/c-language/simple-fifo.html" ;)
Не, этого сайта не знаю. Первое, что бросилось в глаза - "Что бы использовать этот код для fifo c размером 256 и более, надо для head и tail поменять тип c unsigned char на unsigned short" - это утверждение платформеннозависимое. Писать такое "тихо, сам с собою" - некоторое время можно (недолго), а распространять такую заразу массово - нехорошо. Если важна интерпретация содержания переменной, то в ход идут типы, предназначенные для соотв-го содержимого, если же важен именно ее размер, то необходимо и типы выбирать те, что задают размер (uint8_t, uint16_t).

Siarzhuk писал(а):
Это я вас методом "от противного" подловить хотел.
Не стоит никого подлавливать, тем более, что ТС от этого только еще больше запутается. А он и сам уже многое для этого сделал.

Siarzhuk писал(а):
А вот, кстати, конкатенирование к имени структуры ещё и __LINE__ нас не спасёт?. Вроде ешё и __COUNTER__, помню, имеется.

У ТСа (Prinv) полный каквардак в голове как по поводу синтаксиса/семантики языка, так и в отношении работы препроцессора. Пытаясь "автоматизировать", а по-сути - спрятать от своих глаз, создание типа, он умножает один кавардак на другой и получает уже не два кавардака, а кавардак в квадрате... а Вы подбираете способ, как ему из этой ситуации не выкарабкаться? :)))
Я, со своей стороны, ему посоветовал - без дефайнов! Пусть все будет прозрачно, для начинающих это важно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Сб сен 26, 2015 09:13:24 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
Pnjom-Penb писал(а):
Первое, что бросилось в глаза - "Что бы использовать этот код для fifo c размером 256 и более, надо для head и tail поменять тип c unsigned char на unsigned short" - это утверждение платформеннозависимое.

Вот-вот, я ваш "переход на указатели" в этом ключе и расценил - как избавление от ограничений размера переменной индекса переходом на прямую адресацию хвоста и головы. Другой вопрос, что это дезавуирует все остальные трюки из этого заголовка которые заточены именно под индексы - ну то дело для препроцессора обычное - чем больше прячется под #define тем более снижается универсальность и безопасность применения такого дефайна.

Pnjom-Penb писал(а):
Пытаясь "автоматизировать", а по-сути - спрятать от своих глаз, создание типа, он умножает один кавардак на другой и получает уже не два кавардака, а кавардак в квадрате...

Судя по последним его отметкам в теме, движение как раз в правильном направлении - взято чужое решение на препроцессоре и приведено к читабельному C коду. Впрочем, надеюсь, он нам и сам расскажет, что получилось. ;)

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Сб сен 26, 2015 09:55:23 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 674
Откуда: Пермь
Рейтинг сообщения: 0
Котаны, я уже давно сделал свою реализацию fifo :)))
У меня просто был вопрос по синтаксису и только.
Спасибо всем, кто участвовал.

_________________
Никакая контра не уйдёт от нас


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1478 ]     ... , , , 12, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y