1. 程式人生 > >const.char型別形參與LPWSTR型別的實參不相容

const.char型別形參與LPWSTR型別的實參不相容

我們在用VS2012,VS2013編譯自己或者網上的原始碼時會提示如下錯誤“LPWSTR型別的實參與const.char型別形參不相容”,如果我們在VC6.0上執行時不會提示這個錯誤的。主要原因是VC6預設使用字元ANSI編碼方式而VS2012、VS2013預設使用UNICODE編碼方式。它們對一些字元所佔記憶體空間的位數不同,為了向下相容,可以在VS中通過修改一項設定來完成。


1. 右擊專案檔案,選擇屬性,【配置屬性】-【常規】-【字符集】


更改字符集為:使用多位元組字符集


單擊確定即可,再次編譯,此類錯誤就不會出現了。

LPCWSTR=const wechar_t*

為了滿足程式程式碼的國際化需要,業界推出了Unicode標準,它提供了一種簡單和一致的表達字串的方法,所有字串中的位元組都是16位的值,其數量也可以滿足差不多世界上所有書面語言字元的編碼需求,開發程式時使用Unicode(型別為wchar_t)是一種被鼓勵的做法。
LPWSTR與LPCWSTR由此產生,它們的含義類似於LPSTR與LPCSTR,只是字元資料時16位的wchar_t而不是char.
ANSI操作函式以str開頭,如strcpy(), strcat(), strlen();
Unicode操作函式以wcs開頭,如wcscpy, wcscpy(), wcslen();


VS預設採用寬字元UNICODE編碼方式,定義了Unicode,因此相關的字串必須為unicode字串,而非ascii字串,LPCWSTR中的W是塊子符的意思,是Unicode,就是說不是傳統的char這種單位元組字元,而是一個字元佔兩位元組。


配置屬性-【C/C++】-【前處理器】-【前處理器定義】
看看有沒有UNICODE/_UNICODE,有的話就去掉,