Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > BOOL и API функции |
Автор: Alca 17.11.2011, 12:33 | ||
http://msdn.microsoft.com/en-us/library/cc230302(v=PROT.10).aspx
Может ли какая-либо API-функция, возвращающая тип BOOL (0 или 1), возвращать значения отличные от 0 и 1? Т.е. в MSDN обычно пишут: если ошибка, то 0, а если успех - значение отличное от 0 (т.е. любое число отличное от нуля). Собственно это меня и смущает. |
Автор: Dem_max 17.11.2011, 12:44 | ||||
Может.
Тут все вроде четко написано. |
Автор: Alca 17.11.2011, 13:05 | ||
Ну да BOOL это 0 или единица, но может так и не быть ![]() Добавлено через 35 секунд Так зачем тогда тыкать бул, если есть инт?? |
Автор: feodorv 17.11.2011, 14:56 |
BOOL (у Microsoft) просто сигнализирует разработчику, что вызов возвращает удача-неудача и всё (хотя здесь возможны весьма удивительные отступления от этого правила). Если возвращается int (скорее, DWORD), то этот DWORD должен нести какую-то дополнительную смысловую нагрузку (хотя и здесь возможны варианты))). |
Автор: Dem_max 17.11.2011, 19:11 |
BOOL это некий свой тип который определяется как INT который в свою очередь определяется как int. И между BOOL и bool большая разница как между bool и int. Но всяко мелкософту удобен тип int для возвращаемого значения. Если функция возвращала когда либо BOOL то в другой момент жизни у майкрософт она может возвращать HRESULT |
Автор: Alca 17.11.2011, 19:39 | ||
а это типа что? ![]()
Добавлено через 3 минуты и 12 секунд чёс? |
Автор: 500mhz 17.11.2011, 22:51 | ||
кароче упростим ситуацию, winapi возвращает 32 битное значение (в регистре еах если быть точным), а как вы его интерпритируете это уже ваши проблемы, и при успешном запершении вызова не всегда 0 а при ошибке не всегда 1, как пример CreateFile
INVALID_HANDLE_VALUE = -1 ))) |
Автор: Alca 17.11.2011, 23:11 |
Я про BOOL, а не про HANDLE Добавлено @ 23:13 Ну да ладно, буду внимательным с BOOL. Всем спасибо. |