【发布时间】:2010-05-11 09:20:58
【问题描述】:
#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。您强制编译器以您认为应该查看的方式查看提供的字节,而不是编译器的类型系统当前理解它们的方式。恕我直言,如果从那时起演员表似乎起作用了,那情况会更糟,你会认为简单地加入演员表来强制代码编译是一件好事。从来都不是。在添加演员表之前,您应该始终了解自己在做什么。