Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
#1

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

08.04.2011, 13:32. Просмотров 1259. Ответов 5
Метки нет (Все метки)

Вопрос не совсем по программированию, если оффтоп - заранее извиняюсь. Сам вопрос: зачем в Windows библиотеках для C++ (MVS) сделано огромное количество псевдонимов для одних и тех же типов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2011, 13:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++ и псевдонимы типов (C++):

Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов. - C++
Буду благодарен! Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов.

Разработайте перегружены функции, в которые передаются два параметра типов int или float и три параметра типов - C++
Разработайте перегружены функции, в которые передаются два параметра типов int или float и три параметра типов int или float и возвращают...

приведение типов - C++
Объясните, пожалуйста, почему возникает такая ошибка: error C2666: 'operator *' : 4 overloads have similar conversions ? Из-за того,...

Приведение типов. - C++
Столкнулся с задачей считывания данных из символьного массива с дальнейшим отбором из всего этого чисел и перезаписи их в массив типа...

Сравнение типов - C++
есть функция: void equalSep(char* str) { // пытаюсь сравнить str и "." или любой другой символ } как мне сделать...

Преобразование типов - C++
Всем доброго здоровья. Не могу решить простенькую задачу, уже не знаю что делать.Суть такова нужно вытащить из строки(символьный тип),...

5
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 не даст этого сделать, т.к. она требует именно указатель на окно, а не на шрифт.

Вот и всё.
0
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;

Такие навороты то зачем?
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
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* - тоже понятно, но в том случае, когда как раз имеется ввиду указатель на сырые байты. Например, в прототипах бинарнофайловых функций.
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
08.04.2011, 13:53 #5
DKOI, как говорится, если функция ничего не делает, а в документации сказано ее использовать - используйте, кто сказал что завтра она не начнет делать что-то.
Цитата Сообщение от taras atavin Посмотреть сообщение
Именно эту четвёрку хорошо бы спросить у мелкомягких, так как иначе трудно догадаться о различии их семантик.
По сабжу цитата из статьи на MSDN.
Чтобы упростить преобразование кода для многоязыковых приложений, в библиотеке времени выполнения Microsoft имеются относящиеся к Microsoft универсальные текстовые сопоставления для большинства типов данных, стандартных процедур и других объектов. Эти сопоставления определены в файле Tchar.h и могут использоваться для написания универсального кода, который можно скомпилировать в однобайтовой кодировке, многобайтовой кодировке или в кодировке Unicode (в зависимости от значения константы манифеста, определенной с помощью директивы #define). Универсальные текстовые сопоставления представляют собой расширения Microsoft, несовместимые со стандартами ANSI.
Полный вариант по ссылке
0
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
08.04.2011, 14:00  [ТС] #6
Хм, в таком случае понятно, зачем такие нагромождения... хотя даже с такого ракурса они кажутся излишним, но мне может многое казаться, опыта ещё слишком мало Спасибо за разъяснения
0
08.04.2011, 14:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2011, 14:00
Привет! Вот еще темы с ответами:

Преобразование типов - C++
Доброго времени суток, у меня вопрос возник из нежелания переписывать довольно большой кусок кода. Есть ли какой-нибудь способ сделать...

Преобразование типов - C++
Доброго времени суток. В программе нужен корректный ввод числа. Если, например вводим буковки - выводится сообщение, далее в цикле -...

Преобразование типов - C++
Увидел код в сети, решил откомпилировать. Думаю какой код не важно. вылезла куча ошибок. на это LPSTR ActW = new TCHAR; ругается с...

Приведение типов. - C++
Доброго времени суток! В общем, есть класс Matrix(прямоугольные над полем вещ. чисел). Необходимо реализовать приведение типов Matrix...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.