问一个简单而奇怪的函数参数的类型有关问题~请大家一定给看看

问一个简单而奇怪的函数参数的类型问题~请大家一定给看看
以下是程序代码:
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