
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.100] |
![]() |
|
Страницы: (4) « Первая ... 2 3 [4] все ( Перейти к последнему сообщению ) |
Сообщ.
#46
,
|
|
|
Помню я на форуме С++ создавал тему про ошибку. Создал консолньый проект, там сделал класс, перенес код в ГУИ, а там все заглючило.
Ошибка была вот в чем: ![]() ![]() typedef char BOOL; // в консольном проекте не подключал windows.h он был не нужен Когда я узнал, что Microsoft сделал BOOL int'ом - я был в шоке. За такое разработчиков надо кастрировать или оторвать пальцы. |
Сообщ.
#47
,
|
|
|
Цитата Red Devil @ Когда я узнал, что Microsoft сделал BOOL int'ом - я был в шоке. За такое разработчиков надо кастрировать или оторвать пальцы. Это из-за размера? Тогда огорчу, 1-байтная переменная на современных 32-битных процессорах ведет к уменьшению производительности. |
Сообщ.
#48
,
|
|
|
Цитата Когда я узнал, что Microsoft сделал BOOL int'ом - я был в шоке. За такое разработчиков надо кастрировать или оторвать пальцы. Вообще то размер bool Стандартом не специфицирован, поэтому мы имеем то что имеем. Каждый производитель компиляторов волен тут делать всё, что захочет, поэтому - без фанатизма пожалуйста. Цитата Это из-за размера? Тогда огорчу, 1-байтная переменная на современных 32-битных процессорах ведет к уменьшению производительности. ну да, если не рассматривать такой момент, что этот самый int ещё и хранить где то нужно (ну, давайте к примеру сравним объёмы 1000000 int-ов и bool ![]() ![]() +компиль на самом деле может так хитро съоптимизировать, что никаких переменных создаваться вообще не будет, так что не знаю, не знаю... мне bool вообще приятнее. |
Сообщ.
#49
,
|
|
|
Цитата BugHunter @ так что не знаю, не знаю... мне bool вообще приятнее. ![]() приятней он мне т.к. он стандартный ![]() |
Сообщ.
#50
,
|
|
|
Странно, что вы высчитываете байты... помоему самая большая проблема в выборе между BOOL и bool:
![]() ![]() int IsObjectValid() { return -1; // Например Object is invalid! } BOOL IsValid() { return IsObjectValid(); } int main() { if( IsValid() == TRUE ) .... // Ошибка } |
Сообщ.
#51
,
|
|
|
Цитата MOHAX @ Странно, что вы высчитываете байты... помоему самая большая проблема в выборе между BOOL и bool: А в чем ты тут видишь проблему? |
Сообщ.
#52
,
|
|
|
Цитата MOHAX @ Эта проблема называется "использование магических чисел" и "неявные преобразования". помоему самая большая проблема в выборе между BOOL и bool |
Сообщ.
#53
,
|
|
|
Нельзя сравнивать переменную типа BOOL со значениями TRUE и FALSE.
Т.е. как в приведенном выше примере: ![]() ![]() if( IsValid() == TRUE ) { // Этот код никогда не выполнится } if( IsValid() == FALSE ) { // И этот код тоже никогда не выполнится } Именно поэтому я за bool ![]() |
Сообщ.
#54
,
|
|
|
Почему не выполнится
if( IsValid() == FALSE ) { } понятно, потому что FALSE на самом деле это 0. Как правильно заметил Трейнер, это всего лишь проблема использования магических констант. Проблема легко лечится битием по рукам: если магическая константа не равно 0, то её необходимо тчательно документировать ![]() |