Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по CreateThread 
:(
    Опции темы
Anikmar
Дата 2.4.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 59



Цитата(GoldFinch @  2.4.2009,  15:53 Найти цитируемый пост)
 я еще когда кодил только на турбопаскале\делфи уже знал сколько байт какая переменная занимает

И каков же размер int в TurboC?

Цитата(GoldFinch @  2.4.2009,  15:53 Найти цитируемый пост)
sizeof для простых типов данных нужен если вам надо менять строчку
  typedef float MyData;
на
  typedef double MyData;
чтобы не менять везде *4 на *8

sizeof нужен для того, чтобы свой код сделать правильным и не зависимым от конкретного компилятора (даже не платформы).

Цитата(GoldFinch @  2.4.2009,  15:53 Найти цитируемый пост)
а если вы и так знаете сколько байт занимает тип, и не собираетесь менять этот тип на другой, можно смело юзать константу

Если вы считаете этот подход правильным - вперед с песнями и барабаном  smile 

Другой момент, правильно написанный код с использование sizeof, при смене в компиляторе размера базового типа, вообще менять не придется. Нигде. Был int 16, затем 32, сейчас 64 будет - код будет компилироваться и работать.

Цитата(GoldFinch @  2.4.2009,  15:53 Найти цитируемый пост)
а вы подозреваю это все никак не можете запомнить вот и говорите про sizeof

Что вы. Я даже размер байта не знаю  smile.

Это сообщение отредактировал(а) Anikmar - 2.4.2009, 16:04
PM MAIL ICQ   Вверх
GremlinProg
Дата 2.4.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Anikmar @  2.4.2009,  10:43 Найти цитируемый пост)
Сначала обсуждали конкретный пример, теперь речь о производительности. В данном конкретном случае никакого выигрыша по производительности заметно не будет.

на одну операцию, конечно не будет, я в общем-то пекусь не столько о производительности программы, сколько о производительности программиста

Цитата(Anikmar @  2.4.2009,  10:43 Найти цитируемый пост)

Цитата(GremlinProg @  1.4.2009,  17:17 Найти цитируемый пост)
assert( sizeof(int) <= sizeof(void*) )

ИМХО. Данная вещь хороша при отладке. А закладывать в код вероятность вылета из-за кривого программирования - тут, конечно, дело вкуса, но не проще ли предусмотреть нормальную работу в любом варианте - тем более здесь не требуется особых наворотов.

не понял, а при чем тут криворукость?

assert дает простой способ решать конфликты в отладочной версии,
суть не в том, что он пропускается в релизе, а в том, что в релизе его можно переопределить на нормальный выход из программы, с соответствующим уведомлением пользователя, мол "версия программы несовместима с платформой, обращайтесь по такому-то адресу, к разработчику"

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

ничего страшного в этом нет, это простой способ экономить тебе твое же время, не более

практически в любой программе существует вероятность незапланированного вылета, к примеру: файл, который является основным источником информации, на данный момент не читается (кто-то его открыл)
что делать?
1. можно подождать пока его не закроют (многопоточность, система слежения и т.п.)
2. можно предложить пользователю отменить, приостановить текущую операцию (комбинац. логика, куча проверок, условий и т.п.)
3. а можно просто остановить программу (единый механизм обработки критических ошибок и обратной связи)

только третий вариант дает тебе возможность не городить огород и экономит время (дает возможность потратить его на основной функционал программы)

а если твой софт начинает регулярно присылать тебе такие баг репорты, то вот тут как раз и можно начинать работать над более гибкими версиями, совершенствуя код, тем более, если это коммерческий проект (дополнительный способ оправдывать вложения в него), т.с. двигать его по нарастающей, но всегда законченным (локальный минимум)

GoldFinch, Anikmar, чего делите-то, не пойму
две крайности одной формальности ))


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Anikmar
Дата 2.4.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 59



Цитата(GremlinProg @  2.4.2009,  16:35 Найти цитируемый пост)
не понял, а при чем тут криворукость?

assert дает простой способ решать конфликты в отладочной версии,
суть не в том, что он пропускается в релизе, а в том, что в релизе его можно переопределить на нормальный выход из программы, с соответствующим уведомлением пользователя, мол "версия программы несовместима с платформой, обращайтесь по такому-то адресу, к разработчику"


Я не сказал криворукость. Я сказал "Кривое программирование". Руки, которые это делают - могут быть золотыми.  smile 
Именно про отладку я и сказал. Конкретно в приведенном примере проверяется  не платформа, а совпадение необходимых размеров для преобразования типа. Это я и назвал кривым программированием. Вместо того, чтобы вводить дополнительную проверку на то, что размеры нормально совпадут - просто не рисковать и делать гарантированно правильно. Это даже не платформо-зависимость, а компилеро-ззависимость.

Цитата(GremlinProg @  2.4.2009,  16:35 Найти цитируемый пост)
ничего страшного в этом нет, это простой способ экономить тебе твое же время, не более

И я про это. Никаких дополнительных затрат времени особо не будет - сразу сделать нормально. А потратить чужое время на написание гневного письма, а затем свое - на ответ (а если гневных писем будет много?  smile ) - вот и вспомнится экономия  smile 
ИМХО: платформу вообще надо проверять при инсталляции. "Извините - данная версия программы не совместима с вашим ковриком для мыши" что-нибудь такое.

Цитата(GremlinProg @  2.4.2009,  16:35 Найти цитируемый пост)
практически в любой программе существует вероятность незапланированного вылета, к примеру: файл, который является основным источником информации, на данный момент не читается (кто-то его открыл)
что делать?
1. можно подождать пока его не закроют (многопоточность, система слежения и т.п.)
2. можно предложить пользователю отменить, приостановить текущую операцию (комбинац. логика, куча проверок, условий и т.п.)
3. а можно просто остановить программу (единый механизм обработки критических ошибок и обратной связи)

только третий вариант дает тебе возможность не городить огород и экономит время (дает возможность потратить его на основной функционал программы)

Так вот откуда надписи типа "Произошла внутренняя ошибка программы. Все данный будут потеряны. Если ошибка повторится свяжитесь с разработчиком". В ведро такой софт. ИМХО. Надо к таким фразам издевательскую надпись добавлять "Видите-ли, программисту было лень городить огород- так как основное время он потратил на другой функционал, но он с удовольствием выслушает ваши претензии"  smile 

Цитата(GremlinProg @  2.4.2009,  16:35 Найти цитируемый пост)
GoldFinch, Anikmar, чего делите-то, не пойму
две крайности одной формальности )) 


Да ничего мы не делим. У каждого свой подход и свой взгляд на жизнь. Я чистой воды прикладник, писал вещи узкоспециализированные и заказные. Напрямую общался с конкретными пользователями и очень хорошо знаю претензии типа "Эту кнопку надо по-другому назвать, а  вот это поставить в левый нижний угол". Уровень моих пользователей - это при слове файл, они сразу думали про пластиковый конвертик. И вариант "напишите разработчику" у меня не прокатывает никак. Первый мой принцип - максимальная дуракоустойчивость".

PM MAIL ICQ   Вверх
GremlinProg
Дата 2.4.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Anikmar @  2.4.2009,  19:07 Найти цитируемый пост)
Конкретно в приведенном примере проверяется  не платформа, а совпадение необходимых размеров для преобразования типа. Это я и назвал кривым программированием.

ну, это как посмотреть, где ты встречал платформу, которая разницу между размерами двух своих типов данных декларирует по-разному?
это просто логическое следствие
я в таком случае не вижу причины называть здесь что-то кривым
на разницу между отладкой и релизом, я ведь тоже внимание обратил:
Цитата(GremlinProg @  2.4.2009,  18:35 Найти цитируемый пост)
суть не в том, что он пропускается в релизе, а в том, что в релизе его можно переопределить на нормальный выход из программы

Цитата(Anikmar @  2.4.2009,  19:07 Найти цитируемый пост)
И я про это. Никаких дополнительных затрат времени особо не будет - сразу сделать нормально. А потратить чужое время на написание гневного письма...

сразу нормально - это только если задачка не сложная, без ветвлений
а конфликты с пользователями по-хорошему должны решать "манагеры по работе с клиентами", они для этого и нужны, если ты совмещаешь эти должности, требуй прибавки к зарплате, прибавили - терпи сам выбрал, а нет - уходи, не понимаю, зачем тратить нервы впустую (клиенты ведь разные бывают, могут любой мелочи придраться, не наше это дело, вникать в их "критические дни")

Цитата(Anikmar @  2.4.2009,  19:07 Найти цитируемый пост)
Так вот откуда надписи типа "Произошла внутренняя ошибка программы. Все данный будут потеряны. Если ошибка повторится свяжитесь с разработчиком". В ведро такой софт. ИМХО. Надо к таким фразам издевательскую надпись добавлять "Видите-ли, программисту было лень городить огород- так как основное время он потратил на другой функционал, но он с удовольствием выслушает ваши претензии"

какие данные? если софт в принципе не для этой платформы, какие он там данные-то успел навоять?
ну, можно поздравить его, коли так, мол мы даже не подозревали о таких скрытых вохможностях нашей программы, такую поддержку мы намечали только в n-ой версии продукта


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Anikmar
Дата 2.4.2009, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 59



Цитата(GremlinProg @  2.4.2009,  18:07 Найти цитируемый пост)
ну, это как посмотреть, где ты встречал платформу, которая разницу между размерами двух своих типов данных декларирует по-разному?
это просто логическое следствие

Ну вот, завел вас похоже.  smile  Объясню кривость такого подхода: Совместимость платформ проверяется на этапе инсталяции, но никак не при запуске основного софта. Т.е. идиот пользователь (ну они же все идиоты - к менеджерам их, пусть там разбираются) сидит и развлекается созерцанием инсталяции, затем жамкает кнопку "Запустить" (образно), а ему вежливый ответ: "видишь ли дурачок, у тебя не та платформа".
Опять таки к конкретно этому примеру: ну никак не должен софт зависеть от разницы в размерах int и указателя - хоть тресни. Останусь при своем ИМХО и не буду больше на эту тему спорить.

Цитата(GremlinProg @  2.4.2009,  18:07 Найти цитируемый пост)
сразу нормально - это только если задачка не сложная, без ветвлений

Каким образом ветвления влияют на аккуратность в преобразованиях и соблюдение чистоты кода? Напротив, чем сложнее задача, тем лучше придерживаться одного стиля.

Цитата(GremlinProg @  2.4.2009,  18:07 Найти цитируемый пост)
какие данные? если софт в принципе не для этой платформы, какие он там данные-то успел навоять?

Если такая проверка перед запуском - то конечно не успеет еще ничего наваять - кроме инсталяции самой программы, но об этом я уже написал. А так я такую фразу привел не касаемо кобсуждаемой ситуации, а касаемо к вашей точке зрения - пользователь это к менеджерам, интерфейс - попозже, главное функционал. Сколько людей, столько мнений.

Цитата(GremlinProg @  2.4.2009,  18:07 Найти цитируемый пост)
если ты совмещаешь эти должности, требуй прибавки к зарплате, прибавили - терпи сам выбрал, а нет - уходи, не понимаю, зачем тратить нервы впустую

Сам во всех ипостасях - очень просто так как фрилансер.
PM MAIL ICQ   Вверх
Dem_max
Дата 3.4.2009, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Согласен с  Anikmar, 
для переносимости кода необходимо использовать sizeof() там где это нужно. 
Для тех кто в "танке" и не хочет выходить от туда почитайте хотябы эту статью
20 ловушек переноса Си++ - кода на 64-битную платформу


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
GoldFinch
Дата 3.4.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



Dem_max, а при чем тут х64 ? там чтоли sizeof(int)!=sizeof(void*) ?
PM MAIL ICQ   Вверх
Dem_max
Дата 3.4.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата

а при чем тут х64

да x64 тут особо не причем, но статья хорошая. 
Цитата

 sizeof(int)!=sizeof(void*) 

для некоторых платформ да.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.