#define __T(x) L ## x
在MFC源头文件之一的代码中找到。它主要用于将字符串转换为........(我不知道是什么)。如果我是正确的它将字符串转换为LPCTSTR ...不知道那种类型是...解释此宏
我似乎无法将char *转换为LPCTSTR。虽然MFC文件处理,下面的代码将总是返回错误,而试图打开文件...
char* filepath = "C:\\Program Files\\Microsoft Office\\Office12\\BITMAPS\\STYLES\\GLOBE.WMF";
if(!file.Open((LPCTSTR)filepath , CFile::modeRead, &fexp))
{
fexp.ReportError();
return 1;
}
但是相反,如果我写的这种方式,它不给错误:
if(!file.Open(_T("C:\\Program Files\\Microsoft Office\\Office12\\BITMAPS\\STYLES\\GLOBE.WMF") , CFile::modeRead, &fexp))
{
fexp.ReportError();
return 1;
}
我期待传递一个变量作为CFile :: Open()方法的第一个参数。
顺便说一句,您不会以任何方式将'char *'转换为'LPCTSTR',并将其投掷到那里。您迫使编译器以您认为应该查看的方式查看提供的字节,而不是编译器的类型系统当前理解它们的方式。如果演员出现工作,那么,恕我直言,这会变得更加糟糕,因为那时你会认为只是抛出演员来强制代码编译是件好事。它不是,永远。在添加演员之前,你应该总是明白你在做什么。 – 2010-05-11 10:05:46