国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C++ STL編程輕松入門

2019-11-17 05:23:41
字體:
供稿:網(wǎng)友
  2.4 如何運(yùn)行   在你還沒有真正開始運(yùn)行前面后兩個程序之前,最好先瀏覽一下本節(jié)。這里簡單介紹了在特定編譯器環(huán)境下運(yùn)行STL程序的一些細(xì)節(jié),并提供了一些可能碰到的問題的解決辦法。  此處,我選用了目前在Windows平臺下較為常見的Microsoft Visual C++ 6.0和Borland C++ Builder 6.0作為例子。盡管Visual C++ 6.0對最新的ANSI/ISO C++標(biāo)準(zhǔn)支持的并不是很好。不過據(jù)稱Visual C++ .NET(也就是VC7.0)在這方面的性能有所改善。  你可以選用多種方式運(yùn)行前面的程序,比如在Visual C++下,你可以直接在DOS命令行狀態(tài)下編譯運(yùn)行,也可以在VC的IDE下采用控制臺應(yīng)用程序(Console application)的方式運(yùn)行。對于C++ Builder,情況也類似。  對于Visual C++而言,假如是在DOS命令行狀態(tài)下,你首先需要找到它的編譯器。假定你的Visual C++裝在C:/PRogram Files/Microsoft Visual Studio/VC98下面,則其編譯器所在路徑應(yīng)該是C:/Program Files/Microsoft Visual Studio/VC98/Bin,在那里你可以找到cl.exe文件。編譯時請加上/GX和/MT參數(shù)。假如一切正常,結(jié)果就會產(chǎn)生一個可執(zhí)行文件。如下所示:cl /GX /MT example2_2.cpp   前一個參數(shù)用于告知編譯器答應(yīng)異常處理(Exception Handling)。在P. J. Plauger STL中的很多地方使用了異常處理機(jī)制(即try…throw…catch語法),所以應(yīng)該加上這個參數(shù),否則會有如下警告信息:warning C4530: C++ exception handler used, but unwind semantics are not enabled.   后一個參數(shù)則用于使程序支持多線程,它需要在鏈接時使用LIBCMT.LIB庫文件。不過P. J. Plauger STL并不是線程安全的(thread safety)。假如你是在VC環(huán)境下使用像STLport這樣的STL實(shí)現(xiàn)版本,則需要加上這個參數(shù),因?yàn)镾TLport是線程安全的。  假如在IDE環(huán)境下,可以在新建工程的時候選擇控制臺應(yīng)用程序。
C++ STL編程輕松入門(圖一)

圖3:在Visual C++ IDE環(huán)境下運(yùn)行STL程序
  至于那些參數(shù)的設(shè)置,則可以通過在Project功能菜單項(xiàng)中的Settings功能【Alt+F7】中設(shè)置編譯選項(xiàng)來完成。
C++ STL編程輕松入門(圖二)

圖4:在Visual C++ IDE環(huán)境下設(shè)置編譯參數(shù)
  有時,在IDE環(huán)境下編譯STL程序時,可能會出現(xiàn)如下警告信息(前面那幾個示例程序不會出現(xiàn)這種情況):warning C4786: '……' : identifier was truncated to '255' characters in the debug
information   這是因?yàn)榫幾g器在Debug狀態(tài)下編譯時,把程序中所出現(xiàn)的標(biāo)識符長度限制在了255個字符范圍內(nèi)。假如超過最大長度,這些標(biāo)識符就無法在調(diào)試階段查看和計算了。而在STL程序中大量的用到了模板函數(shù)和模板類,編譯器在實(shí)例化這些內(nèi)容時,展開之后所產(chǎn)生的標(biāo)識符往往很長(沒準(zhǔn)會有一千多個字符!)。假如你想熟悉一下這個warning的話,很簡單,在程序里加上如下一行代碼:vector string_array; // 類似于字符串?dāng)?shù)組變量   對于這樣的warning,當(dāng)然可以置之不理,不過也是有解決辦法的。 你可以在文件開頭加入下面這一行:#pragma warning(disable: 4786)。它強(qiáng)制編譯器忽略這個警告信息,這種做法雖然有點(diǎn)粗魯,但是很有效。  至于C++ Builder,其DOS命令行狀態(tài)下的運(yùn)行方式是這樣的。假如你的C++ Builder裝在C:/Program Files/Borland/CBuilder6。則其編譯器所在路徑應(yīng)該是C:/Program Files/ Borland/CBuilder6/Bin,在那里你可以找到bcc32.exe文件,輸入如下命令,即大功告成了:bcc32 example2_2.cpp   至于IDE環(huán)境下,則可以在新建應(yīng)用程序的時候,選擇控制臺向?qū)В–onsole Wizard)。
C++ STL編程輕松入門(圖三)

圖5:在C++ Builder IDE環(huán)境下運(yùn)行STL程序
  現(xiàn)在你可以在你的機(jī)器上運(yùn)行前面的示例程序了。不過,請恕我多嘴,有些細(xì)節(jié)不得不提請你注重。小心編譯器給你留下的陷阱。比如前面第三個程序中有如下這一行代碼:typedef back_insert_iterator< int_vector > back_ins_itr;
  請留意">"前面的空格,最好不要省去。假如你吝惜這點(diǎn)空格所占用的磁盤空間的話,那就太不劃算了。其原因還是在于C++編譯器本身的缺陷。上述代碼,相當(dāng)于如下代碼(編譯器做的也正是這樣的翻譯工作):typedef back_insert_iterator< vector > back_ins_itr;   假如你沒有加空格的話,編譯器會把">>"誤認(rèn)為是單一標(biāo)識(看起來很像那個數(shù)據(jù)流輸入操作符">>")。為了回避這個難題,C++要求使用者必須在兩個右尖括號之間插入空格。所以,你最好還是老老實(shí)實(shí)照我的話做,以避免不必要的麻煩。不過有趣的是,對于上述那行展開前的代碼,在Visual C++里即使你沒有加空格,編譯器也不會報錯。而同樣的代碼在C++ Builder中沒有那么幸運(yùn)了。不過,最好還是不要心存僥幸,假如你采用展開后的書寫方式,則兩個編譯器都不會給你留情面了。  好了,請原諒我的絮叨,現(xiàn)在你可以親身感受一下STL所帶給你的真正獨(dú)特魅力了,祝你好運(yùn)!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 托克托县| 和政县| 新密市| 洪雅县| 枣强县| 罗江县| 合山市| 利川市| 汉沽区| 甘孜县| 五华县| 聊城市| 托里县| 浦东新区| 耿马| 文化| 西华县| 日照市| 黄梅县| 耒阳市| 腾冲县| 济源市| 通州区| 清水县| 二手房| 衡山县| 云南省| 广昌县| 平凉市| 利川市| 重庆市| 浦城县| 澄迈县| 阳朔县| 祁连县| 东安县| 开鲁县| 西昌市| 新闻| 莲花县| 凤山县|