|
sizeof и указатель на структуру! Проблема! |
|
|
|
 |
Ответов
|
Mar 6 2008, 23:50
|
Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469

|
Это все хорошо, но как тогда быть с тем, что sizeof, пусть даже теоретически, но "ВРЕТ"!? Вам известен размер структуры, запихиваете его в поле size этой структуры. И запихиваете, не то что выдает sizeof, а то что Вы как программист наверняка знаете. Вариант zltigo может обломиться опять же по причине того, что могут получиться реально разные по размеру переменные типа структуры с одним и тем же значением в поле size. В функцию передаете указатель на структуру. Теперь уместный вопрос: а как тогда определить внутри вызываемой функции конкретный тип структуры, ее размер? У меня нет ответа. =) Я примерно год назад разбирал код одной библиотеки (Jasper, JPEG2000). Код большой и красивый (коментариев мало, но структурированность хорошая для чистого C). Так вот там встретил вариант от которого плевался. Принцип на Ваш случай такой. Делать поле size первым полем структуры (всех) и, зная это, обращаться к этому полю, начиная с первого байта указаеля. Т.е. если size это 32 разряда int, то вот первых четыре байта и выдергивать из области памяти по указателю. Понимаю, выглядит ОООчень коряво, но так, как оказалось, делают даже крутые разработчики (тот кто написал Jasper для меня крут, достаточно чуток над кодом посидеть, чтобы это понять).
|
|
|
|
Сообщений в этой теме
Samodelkin sizeof и указатель на структуру! Проблема! Mar 6 2008, 09:54 Qwertty Цитата(Samodelkin @ Mar 6 2008, 12:54) In... Mar 6 2008, 10:21 Samodelkin Цитата(Qwertty @ Mar 6 2008, 14:21) Вы в ... Mar 6 2008, 10:27 Непомнящий Евгений X = sizeof(*PTR);
но у вас не указатель на структу... Mar 6 2008, 10:28 Samodelkin Цитата(Непомнящий Евгений @ Mar 6 2008, 14... Mar 6 2008, 10:34 zltigo Цитата(Samodelkin @ Mar 6 2008, 12:54) и ... Mar 6 2008, 10:37 Qwertty Надо было сразу привести рабочий вариант
Кодstruc... Mar 6 2008, 10:45 Samodelkin Цитата(Qwertty @ Mar 6 2008, 14:45) Надо ... Mar 6 2008, 10:58 Непомнящий Евгений То, что вы написали - не скомпилится - у вас неско... Mar 6 2008, 11:26 Samodelkin Цитата(Непомнящий Евгений @ Mar 6 2008, 15... Mar 6 2008, 11:39 InvisibleFed TX_x16_i2c_01, в вашем случае - это переменная тип... Mar 6 2008, 12:13 Непомнящий Евгений Цитата(InvisibleFed @ Mar 6 2008, 15:13) ... Mar 6 2008, 12:27 Samodelkin Цитата(InvisibleFed @ Mar 6 2008, 16:13) ... Mar 6 2008, 12:50 Qwertty Цитата(InvisibleFed @ Mar 6 2008, 15:13) ... Mar 6 2008, 13:29  Samodelkin Цитата(Qwertty @ Mar 6 2008, 17:29) Вот и... Mar 6 2008, 13:37  zltigo Цитата(Qwertty @ Mar 6 2008, 16:29) Вот и... Mar 6 2008, 15:52 Demeny Цитата(Samodelkin @ Mar 6 2008, 12:54) st... Mar 6 2008, 13:52 Samodelkin Цитата(Demeny @ Mar 6 2008, 17:52) Теперь... Mar 6 2008, 14:40  Сергей Борщ Цитата(Samodelkin @ Mar 6 2008, 16:40) Но... Mar 6 2008, 15:53   Samodelkin Цитата(Сергей Борщ @ Mar 6 2008, 19:53) Д... Mar 6 2008, 17:21 bzx У тебя путаница с указателями в голове... То что т... Mar 6 2008, 14:08 rezident Цитата(InvisibleFed @ Mar 7 2008, 04:50) ... Mar 7 2008, 00:52 Непомнящий Евгений Цитата(InvisibleFed @ Mar 7 2008, 02:50) ... Mar 7 2008, 05:16 zltigo Цитата(InvisibleFed @ Mar 7 2008, 02:50) ... Mar 7 2008, 07:32 amw Цитата(InvisibleFed @ Mar 7 2008, 01:50) ... Mar 7 2008, 08:45 InvisibleFed Уважаемые, обратите внимание на ковычки до и после... Mar 7 2008, 12:10 zltigo Цитата(InvisibleFed @ Mar 7 2008, 15:10) ... Mar 7 2008, 12:32 InvisibleFed Обсуждать по теме тут нечего. Я лично не понял ни ... Mar 7 2008, 13:09 zltigo Цитата(InvisibleFed @ Mar 7 2008, 16:09) ... Mar 7 2008, 15:44 radiofill Цитата(Samodelkin @ Mar 6 2008, 12:54) Ес... Mar 10 2008, 15:01
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|