C++ Builder可以編譯所有符合ANSI/ISO標准的原代碼,支持最新ANSI C++/C語言特征:模板、例外、運行、以及Namespaces等,下面著重說明下在Vista系統中C++ Builder的開發工作。
注意:當然,這裡所說的讓位,是指RAD;這裡所提的“VS2005及以後的版本在Vista下將只支持C++托管代碼的開發”來自6月8號在西安參加CodeGear的新品發布會時范路先生所說。
個人很喜歡C#,一方面類庫強大,另一方面因為C#的架構師Anders Hejlsberg(我很佩服,呵呵)。不管MS有多少不好,基於MS和Windows的強大,掌握MS陣營的一種或多種工具很是很有必要的(我只是開源和Linux的擁護者,非常不狂熱),所以我選擇了C#。扯遠了。
C++ Builder2007支持Vista下的原生代碼開發,也只支持這種方式。但是不要以為原生代碼實現不了Vista的特殊效果。范路先生說了。這是C++ Builder及以後的版本的定位,也因為MS將放棄VC++在Vista下的原生代碼開發,將會給予C++ Builder一條生路(同眼下相比)。
忘了Delphi是什麼定位了,可能范路先生沒有說。難道還是雙管齊下?不知道在Vista時代C++ Builder能否重振雄風:)更有可能的是三國時代(上一次是Borland、MS和賽門鐵克)重現--在原生代碼領域?托管還是原生,每個人的偏愛都不一樣--如果你不喜歡C++的話。
不在此列,哈哈--如果不出意外(喜歡C++ && 原生代碼 && RAD的大有人在;來分C++原生代碼RAD的公司姗姗來遲),MS就把一部分江山拱手相讓了;這樣也好,競爭對手也是一種推動力。C++ Builder生成新的控制台應用程序時會自動加上這條語句。這在你所用的程序中不是必須的,所以代碼清單中將其省略。無論有無這條語句,程序運行結果是一致的。
分析輸出結果為:x=32767 x=32768如果用int數據類型,則不會有這個問題,因為int數據類型的取值范圍在正向20億之間,一般不會有繞回的問題。但這時程序可能會稍大一些,因為int需要4字節存儲,而short只需要2字節存儲。
對於大多數應用程序,這個差別是不顯著的。前面介紹了自動類型換算。有時C++無法進行換算,這時可能在編譯器中產生編譯錯誤,說Cannot convert from x to y(無法從x換算到Y)。
編譯器也可能警告說Conversion might lose significant digits換算可能丟失顯著位)。提示 編譯器警告應當作編譯器錯誤。因為它表明出了錯誤。我們應努力生成無警告的編譯。有時警告無法避免,但一定要認真檢查所有警告。應充分了解警告的原因並盡量予以糾正。
說明 這裡介紹的字串操作是C語言中的字串處理方法。大多數C++編譯器提供了cstring類,可以簡化字串的處理(C++ Builder的Visual構件庫中有個AnsiString類,可以處理字串操作。
C++ Builder聯機幫助中詳細介紹了AnsiString類)。盡管C語言中的字串處理方法比較麻煩,但並不過時,C++編程人員經常在使用cstring類和AnsiString類等字串類的同時使用C語言中的字串處理方法。這裡不想對表中的每個函數進行舉例說明,只想舉兩個最常用的函數。strcpy()函數將一個字串復制到另一字串中,源字串可以是變量或直接字串。例如下列代碼:
- //set up a string to hold 29 characters
- char buff[30];
- //copy a string literal to the buffer
- strcpy (buff,"This is a test.");//display it
- cout << buff << end;
- //initialize a second string buffer
- char buff2[]="A second string.";
- //copy the contents of this string to the first buffer
- strcpy (buff,buff2);
- cout << buff << end1;