LPCTSTR と const LPTSTR
LPCTSTR と const LPTSTR は意味が違うということに初めて気が付きました。
void foo(const LPTSTR str) { str[0] = '\0'; }
これ、const だからコンパイルでエラーになるに決まってると思ってたら、無事通りました。
でも、
void foo(LPCTSTR str) { str[0] = '\0'; }
これはエラーが出ます。
定義を見てみると、
typedef TCHAR* LPTSTR; typedef const TCHAR* LPCTSTR;
こんな感じになってます。
つまり、LPCTSTR は const TCHAR* で、const LPTSTR は TCHAR* const という意味になってるみたいですね。
関連:id:melpon:20060119