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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BOOL и API функции 
V
    Опции темы
Alca
Дата 17.11.2011, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 5
Всего: 50



BOOL type
Цитата

A BOOL is a 32-bit field that is set to 1 to indicate TRUE, or 0 to indicate FALSE. 

This type is declared as follows:
typedef int BOOL, *PBOOL, *LPBOOL; 

Может ли какая-либо API-функция, возвращающая тип BOOL (0 или 1),  возвращать значения отличные от 0 и 1?
Т.е. в MSDN обычно пишут: если ошибка, то 0, а если успех - значение отличное от 0 (т.е. любое число отличное от нуля).
Собственно это меня и смущает. 

Это сообщение отредактировал(а) Alca - 17.11.2011, 12:33


--------------------
PM WWW ICQ Skype Jabber   Вверх
Dem_max
Дата 17.11.2011, 12:44 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

возвращать значения отличные от 0 и 1?

Может. 

Цитата

Т.е. в MSDN обычно пишут: если ошибка, то 0, а если успех - значение отличное от 0 (т.е. любое число отличное от нуля).
Собственно это меня и смущает. 

Тут все вроде четко написано.


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


Эксперт
****


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

Репутация: 5
Всего: 50



Цитата

Тут все вроде четко написано.

Ну да  BOOL это 0 или единица, но может так и не быть  smile

Добавлено через 35 секунд
Так зачем тогда тыкать бул, если есть инт??


--------------------
PM WWW ICQ Skype Jabber   Вверх
feodorv
Дата 17.11.2011, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 9
Всего: 45



BOOL (у Microsoft) просто сигнализирует разработчику, что вызов возвращает удача-неудача и всё (хотя здесь возможны весьма удивительные отступления от этого правила). Если возвращается int (скорее, DWORD), то этот DWORD должен нести какую-то дополнительную смысловую нагрузку (хотя и здесь возможны варианты))).


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Dem_max
Дата 17.11.2011, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



BOOL это некий свой тип который определяется как INT который в свою очередь определяется как int. И между BOOL и bool большая разница как между bool и int. Но всяко мелкософту удобен тип int  для возвращаемого значения. Если функция возвращала когда либо BOOL то в другой момент жизни у майкрософт она может возвращать HRESULT

Это сообщение отредактировал(а) GremlinProg - 18.11.2011, 07:23


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


Эксперт
****


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

Репутация: 5
Всего: 50



а это типа что?  smile 
Цитата

A BOOL is a 32-bit field that is set to 1 to indicate TRUE, or 0 to indicate FALSE.


Добавлено через 3 минуты и 12 секунд
чёс?


--------------------
PM WWW ICQ Skype Jabber   Вверх
500mhz
Дата 17.11.2011, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 3
Всего: 14



кароче упростим ситуацию, winapi возвращает 32 битное значение (в регистре еах если быть точным), а как вы его интерпритируете это уже ваши проблемы, и при успешном запершении вызова не всегда 0 а при ошибке не всегда 1, как пример CreateFile
Цитата

Return value

If the function succeeds, the return value is an open handle to the specified file, device, named pipe, or mail slot.

If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.


INVALID_HANDLE_VALUE = -1   )))


--------------------

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


Эксперт
****


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

Репутация: 5
Всего: 50



Я про BOOL, а не про HANDLE

Добавлено @ 23:13
Ну да ладно, буду внимательным с BOOL. Всем спасибо.

Это сообщение отредактировал(а) Alca - 17.11.2011, 23:14


--------------------
PM WWW ICQ Skype Jabber   Вверх
volatile
Дата 17.11.2011, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 13
Всего: 85



Цитата(Alca @  17.11.2011,  12:33 Найти цитируемый пост)
Может ли какая-либо API-функция, возвращающая тип BOOL (0 или 1),  возвращать значения отличные от 0 и 1?

Может, и причем это официально задокументировано.
BOOL у мелкомягких может принимать "неограниченный диапазон значений"  smile 
Далеко ходить не надо. Самая что ни на есть обычная функция, используемая в каждом приложении
GetMessage
может возвращать:
  •  0
  • не 0
  • и еще третью величину -1
smile 

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

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


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

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


 




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


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

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