Не только совместимость, но ещё и гибкость. Мало-ли завтра Microsoft в данном случае (+возможно не без участия Intel/AMD ;) придет в голову, что int у нас теперь 128бит а handle (который вроде был тоже как int) - остался старого размера. Хотя "вроде как" они синонимы были.
Естественно это может вызвать проблемы у любителей приводить в программах handle <-> int напрямую, но по крайней мере не у среды, где грамотно всё разделено.
Пример взят чисто гипотетический. Понятно, что в реале скорее всего в случае 128 интов будет и хэндл на 128. Но чисто для примера.
Другие языки программирования и технологии
Зачем в библиотеке Windows.h базовые типы имеют так много синонимов?
Для "совместимости вперед". На случай, если какой-то из этих типов когда-то перестанет совпадать с базовым.
Попытка обеспечить строгость типов на C, которой в этом языке нет. Особенно если объявить #define STRICT.
Скажем, HANDLE и DWORD, хотя физически оба 32-разрядные, логически это разные типы и они должны быть несовместимы.
Скажем, HANDLE и DWORD, хотя физически оба 32-разрядные, логически это разные типы и они должны быть несовместимы.
Совместимость со всем и вся типа
Потому что слишком много людей думают о совместимости одновременно. Каждый страхуется по-своему.
Поэтому и синонимы есть, и одновременно long int оставили 32 бита для совместимости со старым виндовым кодом (в других осях разрядность long-а равна разрядности программы, т. е. размеру указателя) .
Впрочем, это не значит, что с совместимостью всё будет хорошо. Вот long-и теперь в мультиплатформенном коде использовать не стоит, потому что в MS их сделали "по-своему совместимыми".
Поэтому и синонимы есть, и одновременно long int оставили 32 бита для совместимости со старым виндовым кодом (в других осях разрядность long-а равна разрядности программы, т. е. размеру указателя) .
Впрочем, это не значит, что с совместимостью всё будет хорошо. Вот long-и теперь в мультиплатформенном коде использовать не стоит, потому что в MS их сделали "по-своему совместимыми".
Синонимов чего в Windows.h много? Типов из библиотеки C++? Может быть.
Но WinAPI рассчитан на то, чтоб под него можно было и на чистом Си писать. В котором до недавнего времени даже типа bool не было! Приходилось юзать BOOL из Windows.h Так что BOOL никакой не синоним.
Но WinAPI рассчитан на то, чтоб под него можно было и на чистом Си писать. В котором до недавнего времени даже типа bool не было! Приходилось юзать BOOL из Windows.h Так что BOOL никакой не синоним.
Похожие вопросы
- Вывести в консоль полые геометрические фигуры используя язык C и библиотеку stdio.h .
- Нет библиотеки Dev-C++ нет библиотеки mach.h компилятор MinGW где скачать стандартные библиотеки, и как установить?
- Начинаю изучать С, возник вопрос, что за библиотека "stdafx.h", опишите как можно подробнее пожалуйста.
- Какая польза злоумышленникам заражать библиотеки windows? Тупо портить систему? Бред....
- Какие базовые типы информации вы знаете?
- Что выигрывает, что более благоприятней для развития: закрытые системы типа Windows или открытые типа Linux?
- windows xp sp3 устарел? имеет ли смысл переходить на windows 7?
- какая программа необходимо чтобы шли темы на windows 7 домашняя базовая
- Есть ли библиотеки для Visual studio 2008 c++ вроде conio.h и conlib.h
- почему не подходить мне windows 7 Домашняя базовая?