Форум программистов, компьютерный форум CyberForum.ru

С++ и псевдонимы типов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
08.04.2011, 13:32     С++ и псевдонимы типов #1
Вопрос не совсем по программированию, если оффтоп - заранее извиняюсь. Сам вопрос: зачем в Windows библиотеках для C++ (MVS) сделано огромное количество псевдонимов для одних и тех же типов?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
08.04.2011, 13:34     С++ и псевдонимы типов #2
Для удобства использования. Вот, например, WinAPI - есть HANDLE, HWND, HHOOK, HFONT etc.
А ведь все указывают на void. Но что будет понятней, HANDLE или void*, т.е. указатель куда-то? Конечно же, HANDLE.
Или SOCKET удобней, чем int. А ведь и то, и то - просто идентификатор сокета.

Ну и для более строгой типизации. Ведь мы можем засунуть в функцию, требущую указатель окна (HWND) указатель на шрифт (HFONT).
Но WinAPI не даст этого сделать, т.к. она требует именно указатель на окно, а не на шрифт.

Вот и всё.
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
08.04.2011, 13:40  [ТС]     С++ и псевдонимы типов #3
В таких случаях это понятно, но возьмем, например, следующее
typedef wchar_t _TCHAR;
typedef wchar_t _TSCHAR;
typedef wchar_t _TUCHAR;
typedef wchar_t _TXCHAR;

Такие навороты то зачем?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.04.2011, 13:50     С++ и псевдонимы типов #4
Не только для удобства текущей разработки. HANDLE - вобще дискриптор, HWND - дескриптор окна, HHOOK - дискриптор хука и так далее. Сейчас это вроде бы одно и тоже, но кто сказал, что никогда в будущем остальные дискрипторные типы типы не разойдутся, а HANDLE не станет их предком? При использовании только типа HANDLE это потребует переписывания всего софта под новые версии осей, причём, придётся тщательно проверять весь текст каждой софтины. А при использовании синонимичных сейчас типов достаточно будет софт только перекомпилить с другими определениями самих типов, да внести изменения, обусловленные добавлением нового функционала, или изменением форматов документов, но основной текст остаётся в точности тот же, в него не надо будет даже заглядывать.

Добавлено через 3 минуты
Цитата Сообщение от DKOI Посмотреть сообщение
ypedef wchar_t _TCHAR;
typedef wchar_t _TSCHAR;
typedef wchar_t _TUCHAR;
typedef wchar_t _TXCHAR;
Именно эту четвёрку хорошо бы спросить у мелкомягких, так как иначе трудно догадаться о различии их семантик.

Добавлено через 2 минуты
Кстати, void* - тоже понятно, но в том случае, когда как раз имеется ввиду указатель на сырые байты. Например, в прототипах бинарнофайловых функций.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
08.04.2011, 13:53     С++ и псевдонимы типов #5
DKOI, как говорится, если функция ничего не делает, а в документации сказано ее использовать - используйте, кто сказал что завтра она не начнет делать что-то.
Цитата Сообщение от taras atavin Посмотреть сообщение
Именно эту четвёрку хорошо бы спросить у мелкомягких, так как иначе трудно догадаться о различии их семантик.
По сабжу цитата из статьи на MSDN.
Чтобы упростить преобразование кода для многоязыковых приложений, в библиотеке времени выполнения Microsoft имеются относящиеся к Microsoft универсальные текстовые сопоставления для большинства типов данных, стандартных процедур и других объектов. Эти сопоставления определены в файле Tchar.h и могут использоваться для написания универсального кода, который можно скомпилировать в однобайтовой кодировке, многобайтовой кодировке или в кодировке Unicode (в зависимости от значения константы манифеста, определенной с помощью директивы #define). Универсальные текстовые сопоставления представляют собой расширения Microsoft, несовместимые со стандартами ANSI.
Полный вариант по ссылке
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
08.04.2011, 14:00  [ТС]     С++ и псевдонимы типов #6
Хм, в таком случае понятно, зачем такие нагромождения... хотя даже с такого ракурса они кажутся излишним, но мне может многое казаться, опыта ещё слишком мало Спасибо за разъяснения
Yandex
Объявления
08.04.2011, 14:00     С++ и псевдонимы типов
Ответ Создать тему
Опции темы

Текущее время: 19:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru