问一个简单而奇怪的函数参数的类型有关问题~请大家一定给看看
问一个简单而奇怪的函数参数的类型问题~请大家一定给看看
以下是程序代码:
HRESULT hr; // 函数执行返回值
IStorage *pStg = NULL; // 根存储接口指针
IStorage *pSub = NULL; // 子存储接口指针
IStream *pStm = NULL; // 流接口指针
//文件名称只支持宽字符类型!
hr = ::StgCreateDocfile( // 建立复合文件
L "c:\\a.stg ", // 文件名称
STGM_CREATE | STGM_WRITE | STGM_SHARE_EXCLUSIVE, // 打开方式
0, // 保留参数
&pStg); // 取得根存储接口指针
ASSERT( SUCCEEDED(hr) );
我的问题是:为什么我把StgCreateDocfile函数的第一个参数从L "c:\\a.stg "换成_T( "c:\\a.stg ")以后就会出类型错误呢??_T这个宏不是可以在ansi和unicode之间自动转换吗?为什么这里不可以,而只能输入L "c:\\a.stg "呢??
------解决方案--------------------
有没有定义unicode?
#define _UNICODE
以下是程序代码:
HRESULT hr; // 函数执行返回值
IStorage *pStg = NULL; // 根存储接口指针
IStorage *pSub = NULL; // 子存储接口指针
IStream *pStm = NULL; // 流接口指针
//文件名称只支持宽字符类型!
hr = ::StgCreateDocfile( // 建立复合文件
L "c:\\a.stg ", // 文件名称
STGM_CREATE | STGM_WRITE | STGM_SHARE_EXCLUSIVE, // 打开方式
0, // 保留参数
&pStg); // 取得根存储接口指针
ASSERT( SUCCEEDED(hr) );
我的问题是:为什么我把StgCreateDocfile函数的第一个参数从L "c:\\a.stg "换成_T( "c:\\a.stg ")以后就会出类型错误呢??_T这个宏不是可以在ansi和unicode之间自动转换吗?为什么这里不可以,而只能输入L "c:\\a.stg "呢??
------解决方案--------------------
有没有定义unicode?
#define _UNICODE