Недавно начал изучать C++. До этого писал всё на PHP, а там типов данных (ну их указывать не нужно, точнее не ненужно а не обязательно) нет. Вообщем, я не могу понять, что это за тип данных DWORD, WORD? Двойное слово? И еще. Я уже измучился указывать (LPCWSTR) и т.д. Я так понял, это константный указатель на тип char и wchar_t. Но я набрёл на еще кучу таких-же указателей: WPARAM, LPARAM, LRESULT... И т.д.. Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...
Здравствуйте, LukS, Вы писали:
LS>Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...
ищи в msdn(http://msdn.microsoft.com/), прям в поиске набирай))
Здравствуйте, LukS, Вы писали:
LS>Недавно начал изучать C++. До этого писал всё на PHP, а там типов данных (ну их указывать не нужно, точнее не ненужно а не обязательно) нет. Вообщем, я не могу понять, что это за тип данных DWORD, WORD? Двойное слово? И еще. Я уже измучился указывать (LPCWSTR) и т.д. Я так понял, это константный указатель на тип char и wchar_t. Но я набрёл на еще кучу таких-же указателей: WPARAM, LPARAM, LRESULT... И т.д.. Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...
Это не типы C++, а алиасы типов из windows api. Лучше всего начать с изучения соответствующей литературы. В форуме уже много раз были вопросы про литературу для начинающих, поиском найти не сложно.
Здравствуйте, coba, Вы писали:
C>Здравствуйте, LukS, Вы писали:
LS>>Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать... C>ищи в msdn(http://msdn.microsoft.com/), прям в поиске набирай))
Спасибо, но у меня с английским плохо =) Дошло что dword это 4-х байтовый char... Только зачем он? И как превратить char в dword? Просто указать dword dVar = (dword)cStr; ? Насчет указателей я имел ввиду LPCSTR, LPSTR, LPCWSTR и т.д.. Указатели я и так знаю =)
Здравствуйте, LukS, Вы писали:
LS>Недавно начал изучать C++. До этого писал всё на PHP, а там типов данных (ну их указывать не нужно, точнее не ненужно а не обязательно) нет. Вообщем, я не могу понять, что это за тип данных DWORD, WORD? Двойное слово? И еще. Я уже измучился указывать (LPCWSTR) и т.д. Я так понял, это константный указатель на тип char и wchar_t. Но я набрёл на еще кучу таких-же указателей: WPARAM, LPARAM, LRESULT... И т.д.. Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...
Ууу.... Похоже, вы взялись изучать сразу С++ и WinAPI. Лучше не надо. Сначала прочитайте какую-нибудь книжку по С++.
Все упомянутые вами типы относятся к WinAPI, а не к С++, и их названия и смысл обусловлены историческими причинами, так что понять их и нельзя, это нужно запомнить (ну не совсем, но сейчас точно вдаваться в историю ни к чему). Про них нужно читать в какой-нибудь книжке по WinAPI.
На этом сайте, кстати, есть раздел с описаниями книг.
Здравствуйте, LukS, Вы писали:
LS>Недавно начал изучать C++. До этого писал всё на PHP, а там типов данных (ну их указывать не нужно, точнее не ненужно а не обязательно) нет. Вообщем, я не могу понять, что это за тип данных DWORD, WORD? Двойное слово? И еще. Я уже измучился указывать (LPCWSTR) и т.д. Я так понял, это константный указатель на тип char и wchar_t. Но я набрёл на еще кучу таких-же указателей: WPARAM, LPARAM, LRESULT... И т.д.. Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...
WPARAM, LPARAM, LRESULT — это не указатели. Не всегда тайпдефят по принципу LP... === long pointer... со временем это просто запоминается.
А в С++ не так уж много типов. Вот здесь основные С++ типы, все остальное — это typedef/define от них. Да и то, типы с двумя подчеркиваниями вроде __int8 — это уже microsoft specific. Кстати, а вот насчет wchar_t интересно, есть ли в стандарте...
Если не помните/не знаете, что это за тип, тыкаете в Вижуал Студии на него, и в меню выбираете Goto definition. Можно просто мышкой навести — если студия в этот момент не заглючит, она во всплывающей подсказке покажет, как тип объявлен. Только для этого должен быть включен заголовок (ну, у меня студия не найдет объявление без заголовка). Для основных Виндовс типов достаточно включить windows.h и tchar.h
Также можно искать в МСДН — набираете непонятное слово в Индексе и находите нужную статью. При необходимости синхронизируетесь с оглавлением (есть такая кнопочка на тулбаре МСДН-а) и смотрите рядом лежащие статьи.
Здравствуйте, Were, Вы писали:
W>Здравствуйте, LukS, Вы писали:
LS>>Недавно начал изучать C++. До этого писал всё на PHP, а там типов данных (ну их указывать не нужно, точнее не ненужно а не обязательно) нет. Вообщем, я не могу понять, что это за тип данных DWORD, WORD? Двойное слово? И еще. Я уже измучился указывать (LPCWSTR) и т.д. Я так понял, это константный указатель на тип char и wchar_t. Но я набрёл на еще кучу таких-же указателей: WPARAM, LPARAM, LRESULT... И т.д.. Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать... W>Это не типы C++, а алиасы типов из windows api. Лучше всего начать с изучения соответствующей литературы. В форуме уже много раз были вопросы про литературу для начинающих, поиском найти не сложно.
В поиске 120 страниц по слову "Литература для начинающих". Да найти впринципе литературу легко. Просто конкретно этого вопроса. Вбил в Яндекс "Алиасы типов Winapi" — опять отрывки кода только попадаются... Вообщем ладно, я уже усвоил что lpcwstr это const widechar_t и т.д.. Поиск по msdn с текстом "aliases of type" не дал результатов...
Здравствуйте, LukS, Вы писали:
LS>Недавно начал изучать C++. До этого писал всё на PHP, а там типов данных (ну их указывать не нужно, точнее не ненужно а не обязательно) нет. Вообщем, я не могу понять, что это за тип данных DWORD, WORD? Двойное слово? И еще. Я уже измучился указывать (LPCWSTR) и т.д. Я так понял, это константный указатель на тип char и wchar_t. Но я набрёл на еще кучу таких-же указателей: WPARAM, LPARAM, LRESULT... И т.д.. Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...
Чтобы узнать типы WinAPI, я в среде разработки обычно переходил по Go To Declaration..., а там уже и смотрел, что это за тип. Потом открыл для себя книгу Джеффри Рихтера. В общем вопрос в том, что вам нужно. Для изучения WinAPI достаточно C без плюсов. Видимо, вы нарвались на неудачную книжку по изучению C++, ищите рекомендуемые книжки поиском.
Вообще по секрету. Эти типы относятся к WinAPI, а не к C++ так таковому
LP — long pointer
C — const
LPCSTR — Long pointer to constant string (const char*)
LPSTR — не const
LPCWSTR — Юникодная строка const wchar_t*. Идея ясна?
Ах да. Тут не точно, но все это можно проверить в виндовских хедерах.
BYTE = unsigned char
WORD = unsigned short
DWORD = unsigned int.
А лучше Рихтер
Это если WinAPI надо. Можете поискать еще венгерскую запись (самый корявый в мире принцип составления имен типов и переменных, используемый, к несчастью, в WinAPI). Сочувствую вам после PHP...
Здравствуйте, LukS, Вы писали:
LS>В поиске 120 страниц по слову "Литература для начинающих". Да найти впринципе литературу легко. Просто конкретно этого вопроса. Вбил в Яндекс "Алиасы типов Winapi" — опять отрывки кода только попадаются... Вообщем ладно, я уже усвоил что lpcwstr это const widechar_t и т.д.. Поиск по msdn с текстом "aliases of type" не дал результатов...
Ты не с того язык начал изучать. Не лезь пока в WinAPI. Для изучения языка достаточно написания консольных программ. Зайди на rsdb в раздел "книги" и почитай описания книг и отзывы о них. Потом — иди в книжный магазин и купи выбранную книгу или через интернет её закажи.
Здравствуйте, fuyant, Вы писали:
F>Кстати, а вот насчет wchar_t интересно, есть ли в стандарте...
Есть, это стандартный тип (широких символов — L'.'), но он платформенно-зависимый.
gcc по умолчанию считает его 4-байтным (для кодировки UCS-4), хотя может через опцию командной строки переключиться и на 2-байтный (UCS-2 или UTF-16).
Виндовские компиляторы — VC, icc — считают 2-байтным.
Кроме того, у VC есть опция — считать wchar_t отдельным типом или синонимом unsigned short (по умолчанию — отдельный тип).
Кстати говоря: там всё-таки UCS-2 или UTF-16 получается?
Если включить у компилятора мультибайтную кодировку (UTF-8 или китайскую) и написать L"..." где ... — мультибайтный символ, для которого UCS-2 одноэлементный, а UTF-16 уже двухэлементный — какая длина строки получится?
Полагаю, что это тоже платформенно-зависимо, но опциями и прагмами компилятора уже не регулируется
Здравствуйте, Кодт, Вы писали:
К>gcc по умолчанию считает его 4-байтным (для кодировки UCS-4), хотя может через опцию командной строки переключиться и на 2-байтный (UCS-2 или UTF-16). Говорят
Здравствуйте, Camarada, Вы писали:
C>венгерскую запись (самый корявый в мире принцип составления имен типов и переменных, используемый, к несчастью, в WinAPI)
А какие ещё есть варианты нотаций?
Здравствуйте, byleas, Вы писали:
К>>gcc по умолчанию считает его 4-байтным (для кодировки UCS-4), хотя может через опцию командной строки переключиться и на 2-байтный (UCS-2 или UTF-16). B>Говорят
Говорят, переключается (-fshort-wchar). Но при этом теряется совместимость с libc, поэтому это переключение не очень-то востребовано.
А вот про -fwide-exec-charset не догадывался, это интересно. Надо будет на досуге поэкспериментировать.