CHAR、TCHAR、WCHAR_T之间的区别与问题

今天在使用LibXIStream 对视频采集卡进行开发时遇到了给的sample中的程序没问题,而自己写的却无论如何都会失败,打不开相应的采集卡。具体问题时出在这样一个数据结构上的:

typedef struct _VIDEO_CAPTURE_INFO {
XI_ADAPTER_MODEL adapterModel;
XI_DEVICE_TYPE deviceType;
TCHAR szName[_MAX_VIDEO_CAPTURE_NAME];
TCHAR szDShowID[_MAX_VIDEO_CAPTURE_DSHOW_ID];
} VIDEO_CAPTURE_INFO;

其中的两个字符串数组szName与szDShowID要么为空,要么为正确赋值成功,导致之后的功能无法正常运行。在纠结了一段时间后,终于把问题集中到了TCHAR上,然后我分别在sample的例子中和我自己写的程序中找到了对TCHAR的定义:

#ifdef   UNICODE     
  typedef   wchar_t   TCHAR;     
#else     
  typedef   unsigned   char   TCHAR;     
#endif    

然后发现了问题就是出在编码方式上,两个程序一个使用的UNICODE编码,而另一个不是,所以才导致了同样的代码,一个能正确执行,另一个却不行的情况。

posted on 2016-12-01 18:49  Bismarck  阅读(181)  评论(0编辑  收藏  举报