-
- Ну, мне, например, лень. А xx(ярлык структуры) можно в случае typedef не указывать. Использовать же typedef часто очень удобно. Например, Bill(264 знак., 19.12.2014 14:30)
- Это такое же удобство, как "#define V void". Фтопку. - SciFi(19.12.2014 14:38)
- Угу. #define PTRCHAR char * например... Или еще пограблистее придумать? - Олдфаг(19.12.2014 21:51, )
- не совсем. typedef удобен. он делает код более лаконичным. Mahagam(86 знак., 19.12.2014 14:48)
- С таким нежным мозгом лучше Си не трогать :-) - SciFi(19.12.2014 14:50)
- - Едет автобус. RED_DRAGON(650 знак., 19.12.2014 16:15)
- С таким нежным мозгом лучше Си не трогать :-) - SciFi(19.12.2014 14:50)
- Препроцессор это всего-навсего коварная надстройка над языком. Поэтому его нужно по возможности избегать. Typedef, enum - определены самим языком и поэтому контролируются как компилятором, так и программистом. А в общем, кому как нравится. На вкус Bill(13 знак., 19.12.2014 14:47)
- Это такое же удобство, как "#define V void". Фтопку. - SciFi(19.12.2014 14:38)
- Например, чтобы обращаться по указателю к буферу, в котором могут быть в разные моменты самые различные структурированные данные. - Гудвин(19.12.2014 11:36)
- Что-то я туплю. С какого бока там typedef? - SciFi(19.12.2014 11:39)
- На пальцах: Есть, к примеру, UDP буфер. В пакете могут приходить разнообразные структурированные данные. Первый байт буфера - тип данных. Последующие данные представляют структуру того или иного типа. Приводим указатель к типу структуры и Гудвин(163 знак., 19.12.2014 12:02)
- Во-первых, для этого существует union или десериализатор. Во-вторых, кто говорил про #define? В-третьих: SciFi(399 знак., 19.12.2014 12:08)
- А foo и bar память не занимают? Или вы тут профи - не имели дел с MSP со 128 байтами RAM на все-про все? - Гудвин(19.12.2014 12:26)
- Это просто адъ какой-то! Конечно не занимает. Все в сад! - SciFi(19.12.2014 12:32, ссылка)
- С нормальными компиляторами -- таки не занимают. Можно 100500 локальных переменных завести и можно и нужно использовать новую переменную каждый раз как это удобно. Одной из задач компилятора как раз является распределение памяти и регистров между fk0(159 знак., 19.12.2014 12:33)
- Ну нет уж... Я как-нить лениво по-старинке... Появился новый тип данных в следующей версии ПО - опишу в заголовке и заюзаю. Отправлю свежую прошиву народу. Мне так проще и нисколько не парит ваша "неправильность догм". - Гудвин(19.12.2014 12:56)
- И пох мне уровень оптимизации компилятора, его версия и сопутствующие глюки. - Гудвин(19.12.2014 13:00)
- Ну нет уж... Я как-нить лениво по-старинке... Появился новый тип данных в следующей версии ПО - опишу в заголовке и заюзаю. Отправлю свежую прошиву народу. Мне так проще и нисколько не парит ваша "неправильность догм". - Гудвин(19.12.2014 12:56)
- А foo и bar память не занимают? Или вы тут профи - не имели дел с MSP со 128 байтами RAM на все-про все? - Гудвин(19.12.2014 12:26)
- 1) за структуры в UDP нужно отрывать руки. 2) приводим указатель к типу структуры: struct typeofstruct *X = (struct typeofstruct *)pointer_to_anything. Причём здесь define? Зачем typedef? Здесь скорей программирование уровня радиокота и др. fk0(18 знак., 19.12.2014 12:06)
- Ню-ню.. недавно делал интеграцию некой АСУ с процессингом банка. Там вот все такие идиоты, что пользуют структуры и UDP.. вот лохи-то! - POV(19.12.2014 14:52)
- Типичное "у меня всё работает". Последнюю неделю делаю "интеграцию" одной подсистемы большого проекта работающего на нескольких разных железяках. В двух из них -- процессоры MIPS "немного разные". И вот там тоже такой говнокод на уровне API fk0(881 знак., 20.12.2014 00:20)
- Что за поток сознания без аргументов? - POV(20.12.2014 11:38)
- Это у тебя аргумент "мы сделали говнокод --> он работает --> будем дальше говнокодить". Экономические обоснования я выше привёл, лично мне всё понятно и я бы гнал таких говнокодеров подальше. - fk0(20.12.2014 13:45)
- Не "мы" сделали, а меня перед фактом поставили какие данные и как использовать. Это решение банка... POV(345 знак., 20.12.2014 21:14 - 21:25)
- Это же серпом по
яйцамрелигиозным чувствам :-) - SciFi(20.12.2014 21:26)
- Это же серпом по
- Не "мы" сделали, а меня перед фактом поставили какие данные и как использовать. Это решение банка... POV(345 знак., 20.12.2014 21:14 - 21:25)
- Это у тебя аргумент "мы сделали говнокод --> он работает --> будем дальше говнокодить". Экономические обоснования я выше привёл, лично мне всё понятно и я бы гнал таких говнокодеров подальше. - fk0(20.12.2014 13:45)
- Что за поток сознания без аргументов? - POV(20.12.2014 11:38)
- Типичное "у меня всё работает". Последнюю неделю делаю "интеграцию" одной подсистемы большого проекта работающего на нескольких разных железяках. В двух из них -- процессоры MIPS "немного разные". И вот там тоже такой говнокод на уровне API fk0(881 знак., 20.12.2014 00:20)
- Чем тебе UDP насолил? Это просто пакет с моими данными. Теперь, как прохвесианал, расскажи мне - радиокоту, как описать структуры (6 -7 различных структур), чтобы я мог обращаться по указателю к полям структур в этом пакете. Жду... - Гудвин(19.12.2014 12:16)
- Тебе SciFi показал как. typedef по-любому ни к месту. И про union он правильно напомнил. - fk0(19.12.2014 12:28)
- Нельзя обращаться к полям структур в пакете. Точка. Можно только если все участники обмена с одной версией компилятора и железа -- редкое исключение (тем более что ещё много всяких если). Сериализуй. Хоть printf'ом и последующим scanf'ом в fk0(366 знак., 19.12.2014 12:27)
- Кстати, насчет версий компилятора и железа - одни и те же структуры пользую и в MSP, и в меге, и в LPC17, а в PC так вообще дельфЯ (редко VC). Именно всяческие выравнивания в структурах(особливо касается железа MSP), разное железо (от 128 байт RAM Гудвин(424 знак., 19.12.2014 13:25 - 13:34)
- Супермегаговнокод одним словом. - fk0(20.12.2014 00:12)
- Мне по-барабану. - Гудвин(20.12.2014 00:55)
- fk0 точно преувеличивает масштаб проблемы. Трудно ожидать, что endianness и правила выравнивания структур будут так уж неожиданно меняться. А если совсем параноик, то можно добавить assert(). - SciFi(19.12.2014 13:37)
- Блядь, элементарно! Написали код для PC. Завтра его нужно на ARM для андроида сделать. Как пример. Или сменили компилятор. Да и между gcc2.95 и 4.9 боюсь -- дикая пропасть. И если такой говнокод через 10 лет из тумбочки достать, не факт, что fk0(150 знак., 20.12.2014 00:22)
- Супермегаговнокод одним словом. - fk0(20.12.2014 00:12)
- Сэр, не шли бы вы в жопу со своими printf-ами и json-ами... Я как-нить и далее для MSP430f2001 определю несколько типов стрктур и спокойненько их заюзаю... - Гудвин(19.12.2014 12:32)
- Кстати, насчет версий компилятора и железа - одни и те же структуры пользую и в MSP, и в меге, и в LPC17, а в PC так вообще дельфЯ (редко VC). Именно всяческие выравнивания в структурах(особливо касается железа MSP), разное железо (от 128 байт RAM Гудвин(424 знак., 19.12.2014 13:25 - 13:34)
- Ню-ню.. недавно делал интеграцию некой АСУ с процессингом банка. Там вот все такие идиоты, что пользуют структуры и UDP.. вот лохи-то! - POV(19.12.2014 14:52)
- Во-первых, для этого существует union или десериализатор. Во-вторых, кто говорил про #define? В-третьих: SciFi(399 знак., 19.12.2014 12:08)
- ни с какого. типы-то всё равно разные и приводить. typedef может использоваться для совместимости C и C++ -- и там и там после typedef можно одинаково использовать имя типа (в C, без typedef, нельзя, нужно писать struct). Чтоб не путалось с class. fk0(79 знак., 19.12.2014 11:43)
- Вот-вот, и я о том же. - SciFi(19.12.2014 11:55)
- На пальцах: Есть, к примеру, UDP буфер. В пакете могут приходить разнообразные структурированные данные. Первый байт буфера - тип данных. Последующие данные представляют структуру того или иного типа. Приводим указатель к типу структуры и Гудвин(163 знак., 19.12.2014 12:02)
- Что-то я туплю. С какого бока там typedef? - SciFi(19.12.2014 11:39)
- Можно пример для сложной структуры EEPROM со входящими массивами структур с совпадающими полями? - VL(19.12.2014 11:32, )
- Нет, нельзя - лень придумывать. Мне кажется, смешались мухи и котлеты. Я говорю о том, что без typedef можно нормально жить, а удобство анонимных структур при создании вложенных типов - это отдельная тема. - SciFi(19.12.2014 11:36)
- а кто мух в котлеты напустил? ;) - VL(19.12.2014 11:46, )
- Тебе зачем? Ты упорно что-то делаешь неправильно. Можно и не сериализовать (сразу отписывать структуры), но не в таком виде как у тебя... - fk0(19.12.2014 11:35)
- Нет, нельзя - лень придумывать. Мне кажется, смешались мухи и котлеты. Я говорю о том, что без typedef можно нормально жить, а удобство анонимных структур при создании вложенных типов - это отдельная тема. - SciFi(19.12.2014 11:36)
- IMHO вроде как везде без XX можно. - fk0(19.12.2014 11:31)
- Как ты в параметрах функции тип структуры укажешь? Без typedef компилер далеко пошлёт. - POV(19.12.2014 11:31)
- Алё, гараж! "struct foo func(struct bar param);" - SciFi(19.12.2014 11:33)
- Хз.. на заре моего программирования просто struct в чем-то не прокатило. С тех пор всегда typedef ставлю.. Про функции может и ошибся, не помню... POV(42 знак., 19.12.2014 13:14)
- Бубен - наше фсё? :-) - SciFi(19.12.2014 13:20)
- Хз.. на заре моего программирования просто struct в чем-то не прокатило. С тех пор всегда typedef ставлю.. Про функции может и ошибся, не помню... POV(42 знак., 19.12.2014 13:14)
- Алё, гараж! "struct foo func(struct bar param);" - SciFi(19.12.2014 11:33)
- Ну, мне, например, лень. А xx(ярлык структуры) можно в случае typedef не указывать. Использовать же typedef часто очень удобно. Например, Bill(264 знак., 19.12.2014 14:30)