-
- Не очень понимаю зачем typedef Скрипач(114 знак., 24.08.2013 21:47)
- Затем, чтобы не писать каждый раз Bill(24 знак., 25.08.2013 16:53)
- А фиг его знает, этот GCC. "Большие" компиляторы (под x86) слово struct не требуют, относясь к имени структуры, как к самодельному типу данных. По крайней мере, в C++ это всегда так, но так ли это всегда в обычном C, сказать трудно. Многое зависит Ксения(117 знак., 25.08.2013 17:11)
- Дело в том, что структуры/объединения могут и не иметь имен (ярлыков). Тогда как? - Bill(25.08.2013 17:29)
- Тогда выход только один - заводить объекты в том же месте, где объявлена структура. Но тогда описание таких объектов нельзя будет вынести в хидер, т.к. в хидере заводить объекты запрещено (хотя компилятор иногда можно обмануть). Других решений я Ксения(56 знак., 25.08.2013 22:22)
- typedef - механизм объявления новых типов данных вообще. Структуры - всего лишь частный случай. Кстати, Bill(88 знак., 26.08.2013 06:12 - 06:49)
- Это юнионы и структуры механизм объявления новых типов. А typedef для объявления синонимов для существующих типов. - Юра(26.08.2013 08:29, )
- Вовсе необязательно синонимы. Например, можно создать Bill(60 знак., 26.08.2013 09:53)
- Так еще и не разрешит. Разрешит typedef char string[ 255 ]; или на худой конец typedef char* string; Типичные синонимы. - Юра(27.08.2013 00:18, )
- Компилятор не отличает два типа с разным (через typedef) именем, но одинаковой декларацией. Поэтому синоним. А структуры (unions, классы) -- всегда отличает. - fk0(26.08.2013 10:30)
- Вовсе необязательно синонимы. Например, можно создать Bill(60 знак., 26.08.2013 09:53)
- Это юнионы и структуры механизм объявления новых типов. А typedef для объявления синонимов для существующих типов. - Юра(26.08.2013 08:29, )
- typedef - механизм объявления новых типов данных вообще. Структуры - всего лишь частный случай. Кстати, Bill(88 знак., 26.08.2013 06:12 - 06:49)
- Тогда выход только один - заводить объекты в том же месте, где объявлена структура. Но тогда описание таких объектов нельзя будет вынести в хидер, т.к. в хидере заводить объекты запрещено (хотя компилятор иногда можно обмануть). Других решений я Ксения(56 знак., 25.08.2013 22:22)
- Дело в том, что структуры/объединения могут и не иметь имен (ярлыков). Тогда как? - Bill(25.08.2013 17:29)
- А фиг его знает, этот GCC. "Большие" компиляторы (под x86) слово struct не требуют, относясь к имени структуры, как к самодельному типу данных. По крайней мере, в C++ это всегда так, но так ли это всегда в обычном C, сказать трудно. Многое зависит Ксения(117 знак., 25.08.2013 17:11)
- Затем, чтобы не писать каждый раз Bill(24 знак., 25.08.2013 16:53)
- Вам же русским языком сказали, а на примерах показали, что указатель должен быть ТОГО ЖЕ САМОГО ТИПА, что и структура, на которую он указует. Почему же у вас указатель не на структуру, а на массив из u16??? Замените "u16 *ptr" на "struct Ксения(18 знак., 24.08.2013 21:41 - 21:45)
- Я тогда думал, что раз X, Y, Z двухбайтные указатели, значит u16. - mazur(25.08.2013 01:32)
- -> mazur(24.08.2013 22:07)
- ---> - Скрипач(24.08.2013 22:33 - 22:43)
- struct tmrs_queue *p_tmrs_queue = Timers_Queue; - Ксения(24.08.2013 22:34)
- if( sys_tick & (1<<SYS_TICK_FLG)) // уберите == 1, т.к. это может быть только при SYS_TICK_FLG=0 Ксения(123 знак., 24.08.2013 22:39 - 22:42)
- Тоже покритикую: комментарии типа "заводим указатель на структуру blah-blah" бесполезны, так как и без комментария сей факт очевиден. Убейте в себе ещё и Капитана Очевидность SciFi(213 знак., 24.08.2013 22:41)
- Дважды заводите ptr, уберите дубль. Используейте в цикле именно его, а не какую-то ерунду вроде p_tars_queue, которая невесть где определена. Я же вам написала код, какого хрена вы его уродуете? - Ксения(24.08.2013 22:29)
- Хорошо, почему ptr, а не p_tmrs_queue? - mazur(24.08.2013 22:30)
- Можно и p_tmrs_queue имя дать указателю, но тогда определите его, так, как определили ptr. - Ксения(24.08.2013 22:32)
- Я бы и сама написала, но не могу скопировать с ваших картинок. - Ксения(24.08.2013 22:34)
- Можно и p_tmrs_queue имя дать указателю, но тогда определите его, так, как определили ptr. - Ксения(24.08.2013 22:32)
- Хорошо, почему ptr, а не p_tmrs_queue? - mazur(24.08.2013 22:30)
- extern struct tmrs_queue Timers_Queue[]; - Скрипач(24.08.2013 22:24)
- ---> - Скрипач(24.08.2013 22:33 - 22:43)
- Не очень понимаю зачем typedef Скрипач(114 знак., 24.08.2013 21:47)