Re: Типы данных в С++
От: Were  
Дата: 03.02.09 17:26
Оценка: +2
Здравствуйте, LukS, Вы писали:

LS>Недавно начал изучать C++. До этого писал всё на PHP, а там типов данных (ну их указывать не нужно, точнее не ненужно а не обязательно) нет. Вообщем, я не могу понять, что это за тип данных DWORD, WORD? Двойное слово? И еще. Я уже измучился указывать (LPCWSTR) и т.д. Я так понял, это константный указатель на тип char и wchar_t. Но я набрёл на еще кучу таких-же указателей: WPARAM, LPARAM, LRESULT... И т.д.. Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...

Это не типы C++, а алиасы типов из windows api. Лучше всего начать с изучения соответствующей литературы. В форуме уже много раз были вопросы про литературу для начинающих, поиском найти не сложно.
Re[2]: Типы данных в С++
От: Кодт Россия  
Дата: 04.02.09 09:49
Оценка: 1 (1)
Здравствуйте, 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 уже двухэлементный — какая длина строки получится?
Полагаю, что это тоже платформенно-зависимо, но опциями и прагмами компилятора уже не регулируется
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
Re[2]: Типы данных в С++
От: LukS  
Дата: 03.02.09 17:27
Оценка: :)
Здравствуйте, coba, Вы писали:

C>Здравствуйте, LukS, Вы писали:


LS>>Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...

C>ищи в msdn(http://msdn.microsoft.com/), прям в поиске набирай))

Спасибо, но у меня с английским плохо =) Дошло что dword это 4-х байтовый char... Только зачем он? И как превратить char в dword? Просто указать dword dVar = (dword)cStr; ? Насчет указателей я имел ввиду LPCSTR, LPSTR, LPCWSTR и т.д.. Указатели я и так знаю =)
Re: Типы данных в С++
От: fuyant  
Дата: 03.02.09 17:31
Оценка: +1
Здравствуйте, 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

Также можно искать в МСДН — набираете непонятное слово в Индексе и находите нужную статью. При необходимости синхронизируетесь с оглавлением (есть такая кнопочка на тулбаре МСДН-а) и смотрите рядом лежащие статьи.
Re: Типы данных в С++
От: Camarada Россия  
Дата: 04.02.09 06:38
Оценка: -1
Здравствуйте, 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...
Re[4]: Типы данных в С++
От: Кодт Россия  
Дата: 04.02.09 13:29
Оценка: +1
Здравствуйте, byleas, Вы писали:

К>>gcc по умолчанию считает его 4-байтным (для кодировки UCS-4), хотя может через опцию командной строки переключиться и на 2-байтный (UCS-2 или UTF-16).

B>Говорят
Автор: Tujh
Дата: 23.01.09
, не переключается..


Говорят, переключается (-fshort-wchar). Но при этом теряется совместимость с libc, поэтому это переключение не очень-то востребовано.
А вот про -fwide-exec-charset не догадывался, это интересно. Надо будет на досуге поэкспериментировать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
Типы данных в С++
От: LukS  
Дата: 03.02.09 17:11
Оценка:
Недавно начал изучать C++. До этого писал всё на PHP, а там типов данных (ну их указывать не нужно, точнее не ненужно а не обязательно) нет. Вообщем, я не могу понять, что это за тип данных DWORD, WORD? Двойное слово? И еще. Я уже измучился указывать (LPCWSTR) и т.д. Я так понял, это константный указатель на тип char и wchar_t. Но я набрёл на еще кучу таких-же указателей: WPARAM, LPARAM, LRESULT... И т.д.. Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...
константы lp*
Re: Типы данных в С++
От: coba  
Дата: 03.02.09 17:19
Оценка:
Здравствуйте, LukS, Вы писали:

LS>Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...

ищи в msdn(http://msdn.microsoft.com/), прям в поиске набирай))
http://agilemanifesto.org/iso/ru/
Re: Типы данных в С++
От: quodum  
Дата: 03.02.09 17:29
Оценка:
Здравствуйте, LukS, Вы писали:

LS>Недавно начал изучать C++. До этого писал всё на PHP, а там типов данных (ну их указывать не нужно, точнее не ненужно а не обязательно) нет. Вообщем, я не могу понять, что это за тип данных DWORD, WORD? Двойное слово? И еще. Я уже измучился указывать (LPCWSTR) и т.д. Я так понял, это константный указатель на тип char и wchar_t. Но я набрёл на еще кучу таких-же указателей: WPARAM, LPARAM, LRESULT... И т.д.. Подскажите пожалуйста, где можно найти информацию по этим указателям? Я даже не знаю по какому слову искать...


Ууу.... Похоже, вы взялись изучать сразу С++ и WinAPI. Лучше не надо. Сначала прочитайте какую-нибудь книжку по С++.

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

На этом сайте, кстати, есть раздел с описаниями книг.
Re[2]: Типы данных в С++
От: LukS  
Дата: 03.02.09 17:39
Оценка:
Здравствуйте, 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" не дал результатов...
Re: Типы данных в С++
От: Чили Россия  
Дата: 04.02.09 06:33
Оценка:
Здравствуйте, LukS, Вы писали:

Можно распечатать файл windef.h (можно не весь, а только типы) и пока не запомнишь, держать листок где-то под рукой.
Re[3]: Типы данных в С++
От: AleksandrN Россия  
Дата: 04.02.09 09:13
Оценка:
Здравствуйте, LukS, Вы писали:

LS>В поиске 120 страниц по слову "Литература для начинающих". Да найти впринципе литературу легко. Просто конкретно этого вопроса. Вбил в Яндекс "Алиасы типов Winapi" — опять отрывки кода только попадаются... Вообщем ладно, я уже усвоил что lpcwstr это const widechar_t и т.д.. Поиск по msdn с текстом "aliases of type" не дал результатов...


Ты не с того язык начал изучать. Не лезь пока в WinAPI. Для изучения языка достаточно написания консольных программ. Зайди на rsdb в раздел "книги" и почитай описания книг и отзывы о них. Потом — иди в книжный магазин и купи выбранную книгу или через интернет её закажи.
Re[3]: Типы данных в С++
От: byleas  
Дата: 04.02.09 12:03
Оценка:
Здравствуйте, Кодт, Вы писали:

К>gcc по умолчанию считает его 4-байтным (для кодировки UCS-4), хотя может через опцию командной строки переключиться и на 2-байтный (UCS-2 или UTF-16).

Говорят
Автор: Tujh
Дата: 23.01.09
, не переключается..
Re[2]: Типы данных в С++
От: byleas  
Дата: 04.02.09 12:03
Оценка:
Здравствуйте, Camarada, Вы писали:

C>венгерскую запись (самый корявый в мире принцип составления имен типов и переменных, используемый, к несчастью, в WinAPI)

А какие ещё есть варианты нотаций?

off
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.