false vs FALSE and true vs TRUE
От: Аноним  
Дата: 05.11.02 10:10
Оценка:
Здравствуйте всем!
Вопрос такой: чем отличается в VC++ 6.0 false от FALSE и true от TRUE и почему в коде сгенерированном ATL Wizard'ом встречается и то и другое?
Re: false vs FALSE and true vs TRUE
От: Алекс Россия http://wise-orm.com
Дата: 05.11.02 10:15
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте всем!

А>Вопрос такой: чем отличается в VC++ 6.0 false от FALSE и true от TRUE и почему в коде сгенерированном ATL Wizard'ом встречается и то и другое?

true и false — зарезервированные слова С++. int(true) == 1; int(false) == 0.

#define FALSE 0
#define TRUE 1
Re: false vs FALSE and true vs TRUE
От: old Dutchman Беларусь http://blogs.rsdn.org/ikemefula
Дата: 05.11.02 10:21
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте всем!

А>Вопрос такой: чем отличается в VC++ 6.0 false от FALSE и true от TRUE и почему в коде сгенерированном ATL Wizard'ом встречается и то и другое?

BOOL — long(4 байта) не тоже самое, что и bool(1 байт)
FALSE — 0 тож самое, что и false
TRUE — 1 не тоже самое, что и true. Это частный случай true.

Проверяя на TRUE
if(Func() == TRUE) ты сделаешь ошибку, если фунцыя вернет ненулевое чисто.Надо смотреть описания функций и смотреть, что они возвращают.

Надо делать так if( Func() ).
Но, с другой стороны, если функция будет возврящать FALSE,TRUE,UNDEFINED — чисто гипотетический случай — так сделаешь ошибку.

Если проверять на true — будет дополнительно производиться преобразовываться тип из bool в BOOL(aka long)

А в ATL такое — такая вот ATL.
Re[2]: false vs FALSE and true vs TRUE
От: Аноним  
Дата: 05.11.02 10:25
Оценка:
Здравствуйте Алекс, Вы писали:

А>true и false — зарезервированные слова С++. int(true) == 1; int(false) == 0.


А>#define FALSE 0
А>#define TRUE 1


Кто ж спорит! Я поясню вопрос. Что заставило разработчиков ATL Wizard'a использовать и то и другое в своем коде?
Re[2]: false vs FALSE and true vs TRUE
От: Аноним  
Дата: 05.11.02 10:34
Оценка:
Спасибо всем!
Re[2]: false vs FALSE and true vs TRUE
От: snakeye Россия http://www.mahjongg4u.com
Дата: 05.11.02 14:20
Оценка:
OD>if(Func() == TRUE) ты сделаешь ошибку, если фунцыя вернет ненулевое чисто.Надо смотреть описания функций и смотреть, что они возвращают.

OD>Надо делать так if( Func() ).


OD>Но, с другой стороны, если функция будет возврящать FALSE,TRUE,UNDEFINED — чисто гипотетический случай — так сделаешь ошибку.


Позволю себе не согласиться. Действительно необходимо смотреть описания функций и чётко учитвывать возвращаемый тип в операторе if, к примеру:
if(Func() == TRUE)
if(Func() == S_OK)
if(Func() == NULL)
и так далее.
Делается это исключительно для удобства чтения исходного кода раз, и для облегчения поиска возможных ошибок два, что в общем-то взаимосвязано.
С уважением, Андрей
Re[3]: false vs FALSE and true vs TRUE
От: old Dutchman Беларусь http://blogs.rsdn.org/ikemefula
Дата: 05.11.02 14:25
Оценка:
Здравствуйте snakeye, Вы писали:

Что то я не понял, с чем ты не согласен ? Я вроде тоже самое скзал

OD>>if(Func() == TRUE) ты сделаешь ошибку, если фунцыя вернет ненулевое чисто.Надо смотреть описания функций и смотреть, что они возвращают.


OD>>Надо делать так if( Func() ).


OD>>Но, с другой стороны, если функция будет возврящать FALSE,TRUE,UNDEFINED — чисто гипотетический случай — так сделаешь ошибку.


S> Позволю себе не согласиться. Действительно необходимо смотреть описания функций и чётко учитвывать возвращаемый тип в операторе if, к примеру:

S> if(Func() == TRUE)
S> if(Func() == S_OK)
S> if(Func() == NULL)
S> и так далее.

S> Делается это исключительно для удобства чтения исходного кода раз, и для облегчения поиска возможных ошибок два, что в общем-то взаимосвязано.
Re[4]: false vs FALSE and true vs TRUE
От: snakeye Россия http://www.mahjongg4u.com
Дата: 05.11.02 17:22
Оценка:
Здравствуйте old Dutchman, Вы писали:

OD>Что то я не понял, с чем ты не согласен ? Я вроде тоже самое скзал


Я не согласен c:

OD>>>Надо делать так if( Func() ).
С уважением, Андрей
Re[3]: false vs FALSE and true vs TRUE
От: VVV Россия  
Дата: 05.11.02 17:52
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте Алекс, Вы писали:


А>>true и false — зарезервированные слова С++. int(true) == 1; int(false) == 0.


А>
А>>#define FALSE 0
А>>#define TRUE 1
А>


А>Кто ж спорит! Я поясню вопрос. Что заставило разработчиков ATL Wizard'a использовать и то и другое в своем коде?


Здесь был аналогичный вопрос http://www.rsdn.ru/Forum/Message.aspx?mid=64631#64631
Автор: VVV
Дата: 17.06.02


т.е. если переменная или возвращаемое значение внутри программы на C[++] — используй bool, если есть вероятность, что это значение будет передаваться вовне (например, в VB или в Delphi) — используй виндовый BOOL. Аналогично и с другими типами.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.