1. 程式人生 > >VC++6.0和VC++2010的區別

VC++6.0和VC++2010的區別

VC6.0和VS2010最大的區別在於預設的字符集,VC6.0預設的字符集為ANSI,而VS2010預設的字符集為UNICODE.
這就造成了,VC6和VS2010在處理字元問題上的不同。
    首先要說明的是,這種不同主要是編譯器層面上的不同,為什麼要把VC6使用的ANSI字符集。到了VS2010時就改為UINICODE呢。這主要是為了處理字元的方便性來做出更改的。而本身C++語言上的字元型別並沒有改變的,比如char型別仍然為1個位元組,字元常量預設的也是一個字元佔用一個位元組的。
   其實為了相容VC6和VS2010,微軟在作業系統的層面,加入了自己的一套規範,比如說用了一些自己定義的資料型別。如TCHAR 如果說在ANSI字符集下,就相當於char, 而如果是再UNICODE字符集下,就相當於wchar_t.
  而因為在VS2010中處理字元的函式,幾乎都變成了UNICODE的形式,而本身字串常量為char型別。微軟的解決方案是。用_T(),TEXT(),_TEXT()巨集,或者L##來將字串常量改為UNICODE形式的。比如,在VC6中,CString 的Format函式接受ANSI字元,而在VS2010中,必須改為Format(_T("abc"))或者Format(TEXT("abc"));或者Format(L"abc")
;的形式將單個char字元,即用一個位元組代表一個字元的形式。改為UNICODE字元,即兩個位元組代表一個字元。
   另外,VC的main函式可以為void main()形式,而VS2010中最好用int main()的形式。