すいません基本的な事なんですが教えてください。
LPBYTE A;
LPDWORD B;
LPBITMAPINFO binfo;
と
BYTE *A;
DWORD *B;
BITMAPINFO *binfo;
は同じ意味ですか?
教えてください。
やってみりゃわかるべな。
#include <windows.h>
#include <iostream>
#include <typeinfo>
void f() {
LPBYTE A;
LPDWORD B;
LPBITMAPINFO binfo;
std::cout << typeid(A).name() << std::endl;
std::cout << typeid(B).name() << std::endl;
std::cout << typeid(binfo).name() << std::endl;
std::cout << std::endl;
}
void g() {
BYTE *A;
DWORD *B;
BITMAPINFO *binfo;
std::cout << typeid(A).name() << std::endl;
std::cout << typeid(B).name() << std::endl;
std::cout << typeid(binfo).name() << std::endl;
std::cout << std::endl;
}
int main() {
f(); g();
}
επιστημηさんのコードでも
確認できますが、
const LPBYTE A;
const LPDWORD B;
const LPBITMAPINFO binfo;
と
const BYTE *A;
const DWORD *B;
const BITMAPINFO *binfo;
の場合だと、意味が違ってきたりします。
LPBYTE A, B, C;
と
BYTE* A, B, C;
なども意味が違ってきますね。
# 「PBYTE」なんてのもあります。
回答どうもありがとうございます!
自分が知ってるのは
LPBYTE は BYTEのポインタ
LPDWORD は DWORDのポインタ
という事で、それなので以下が成り立つと考えたんですが。
LPBYTE A; == BYTE *A;
LPDWORD B; == DWORD *B;
LPBITMAPINFO は, BITMAPINFO構造体のポインタですか?
ここがよくわからないんですが、
LPBITMAPINFO binfo; == BITMAPINFO *binfo
が成り立つんでしょうか?
よろしければ教えてください。
訊くまでもない。
僕が示したコードをちょいちょいといじくれば確認できるやん。
失礼しました。
ありがとうございます。
VS2005などのIDEを使っているのなら,
右クリックして,コンテキストメニューで定義をクリックすれば,
それぞれ typedef されている箇所に飛ぶと思うので,
それで確認できますよね。
あらかじめ LPなんとかという型があるわけでなく,
typedefしてシノニムを作成しているだけです。
なので,無理して覚えなくても,随時覚えていけばいいわけです。
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
typedef BYTE far *LPBYTE;
typedef WORD far *LPWORD;
さらに WORD や BYTE 自体も
typedef unsigned char BYTE;
typedef unsigned short WORD;
のようにシノニムになっているだけです。
あと,スルーされてしまっているけど,
const のシノニムへの修飾は,
シノニムがポインタだと意味的には違ってきますね。
http://72.14.235.104/search?
q=cache:_pDiIum8v3IJ:www1.kcn.ne.jp/~robe/cpphtml/html03/cpp03001.html+const+%
E3%82%B7%E3%83%8E%E3%83%8B%E3%83%A0+%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%
BF&hl=ja&ct=clnk&cd=1&gl=jp&lr=lang_ja
windef.h や wingdi.h を眺めると,
たくさん typedef されたものがあるので,
カラクリって程ではないけど,なるほど... と仕組みがわかると思います。
>VS2005などのIDEを使っているのなら,
>右クリックして,コンテキストメニューで定義をクリックすれば,
>それぞれ typedef されている箇所に飛ぶと思うので,
>それで確認できますよね。
いろいろ、ありがとうございます!
サイト情報もどうもです!