資源描述:
《CC++編程答疑解惑》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、C/C++編程答疑解惑1.C/C++編程1.1:遇到問(wèn)題怎么解決A論壇的精華區(qū)也有相應(yīng)的討論,許多可以直接解決你的問(wèn)題,也可以GOOGLE查找,并看看精華區(qū)。如果已找了GOOGLE并看了精華區(qū),但是對(duì)某些方面不理解,那么就在論壇上發(fā)問(wèn)。發(fā)問(wèn)時(shí)標(biāo)題要清楚,并把你的問(wèn)題描述清楚。許多人不會(huì)看你帖子的內(nèi)容,所以在標(biāo)題中寫(xiě)清楚問(wèn)題也是很重要的。如果要粘貼代碼,那么使用發(fā)言功能中的CODE功能,這樣可以保證代碼不會(huì)亂,能有更多人看懂你代碼。當(dāng)別人準(zhǔn)確回答了你的問(wèn)題時(shí),應(yīng)該說(shuō)聲謝謝,表示這個(gè)問(wèn)題已回答,并表示對(duì)幫助你的人的感謝。這樣會(huì)讓更多的人覺(jué)得你的一個(gè)好學(xué)有禮貌的人,
2、從而會(huì)更注意你的問(wèn)題。如果你按上面這些方法做了,并不能保證你的發(fā)言一定能回答,因?yàn)椴皇敲總€(gè)人什么問(wèn)題都知道,但可以保證會(huì)有更多人關(guān)注你的問(wèn)題,回答的可能性會(huì)更高。1.2:STLstring怎么轉(zhuǎn)換大小寫(xiě)A:使用STL算法中的transform函數(shù)代碼:??stringstr22="ThisISaMiXedCaSEstRINg";??transform(str22.begin(),str22.end(),str22.begin(),tolower);1.3:怎樣生成動(dòng)態(tài)庫(kù)A:創(chuàng)建步驟:首先創(chuàng)建object文件,這個(gè)文件將加入通過(guò)gcc–fPIC參數(shù)命令加入到共享
3、函數(shù)庫(kù)里面。PIC的意思是“位置無(wú)關(guān)代碼”(PositionIndependentCode)。下面是一個(gè)標(biāo)準(zhǔn)的格式:代碼:gcc-shared-Wl,-soname,your_soname-olibrary_namefile_listlibrary_list下面再給一個(gè)例子,它創(chuàng)建兩個(gè)object文件(a.o和b.o),然后創(chuàng)建一個(gè)包含a.o和b.o的共享函數(shù)庫(kù)。例子中”-g”和“-Wall”參數(shù)不是必須的。代碼:gcc-fPIC-g-c-Walla.cgcc-fPIC-g-c-Wallb.cgcc-shared-Wl,-soname,liblusterstu
4、ff.so.1-oliblusterstuff.so.1.0.1a.ob.o-lc下面是一些需要注意的地方:·不用使用-fomit-frame-pointer這個(gè)編譯參數(shù)除非你不得不這樣。雖然使用了這個(gè)參數(shù)獲得的函數(shù)庫(kù)仍然可以使用,但是這使得調(diào)試程序幾乎沒(méi)有用,無(wú)法跟蹤調(diào)試?!な褂?fPIC來(lái)產(chǎn)生代碼。使用shared說(shuō)明生成動(dòng)態(tài)庫(kù),使用soname說(shuō)明生成的庫(kù)名·某些情況下,使用gcc來(lái)生成object文件,需要使用“-Wl,-export-dynamic”這個(gè)選項(xiàng)參數(shù)。通常,動(dòng)態(tài)函數(shù)庫(kù)的符號(hào)表里面包含了這些動(dòng)態(tài)的對(duì)象的符號(hào)。這個(gè)選項(xiàng)在創(chuàng)建ELF格式的文件時(shí)
5、候,會(huì)將所有的符號(hào)加入到動(dòng)態(tài)符號(hào)表中。可以參考ld的幫助獲得更詳細(xì)的說(shuō)明。star3s補(bǔ)充:對(duì)于C++程序要使用EXTERN“C”說(shuō)明輸出接口代碼:??extern"C"??{???intsoTest(inta,intb);??}??intsoTest(inta,intb)??{???returna+b;??}1.4:怎樣指定程序鏈接某個(gè)庫(kù)的動(dòng)態(tài)庫(kù)或靜態(tài)庫(kù)版本A:使用Bdynamic和-Bstatic選項(xiàng)。默認(rèn)情況下,假如共享庫(kù)可用,連接器會(huì)使用共享庫(kù)。但是-Bdynamic和-Bstatic提供了很好控制庫(kù)的方法。它們可以決定用共享庫(kù)還是用靜態(tài)庫(kù)。傳-Bdy
6、namic和-Bstatic選項(xiàng)給連接器,如下操作:#gcc-omainmain.o-Wl,-Bstatic-lfoo-Wl,-Bdynamic-lbar#gcc-omainmain.o-Wl,-Bstatic告訴連接器所有的庫(kù)(象libc等等)都使用靜態(tài)的版本。1.5:請(qǐng)問(wèn)各UNIX平臺(tái)下和編譯器名kaisakaisa:sunCC(c++)cc(c)alphacxx(c++)cc(c)HPaCC(c++)IBMxlC(c++)1.6:solaris下有沒(méi)有C函數(shù)可以獲得進(jìn)程的相關(guān)信息比如:進(jìn)程名、進(jìn)程pid、進(jìn)程所占CPU/Memory、開(kāi)始時(shí)間、運(yùn)行狀態(tài)
7、等等。謝謝。liupch:2003-03-1910:03讀取/proc/進(jìn)程號(hào)/psinfo這個(gè)文件。就用我告訴你的那個(gè)函數(shù)ioctl(fd,PIOCPSINFO,&procinfo);在看一下procinfo這個(gè)結(jié)構(gòu)就知道了。1.7:c++下使用的問(wèn)題在c++下使用include后為什么編譯器會(huì)報(bào)錯(cuò)呢1.檢查你是不是使用g++編譯器編譯。gcc編c++程序會(huì)有問(wèn)題2.檢查在include頭文件后有沒(méi)有使用usingnamespacestd;新的標(biāo)準(zhǔn)C++加了幾個(gè)關(guān)鍵字,其中最常用的就是namespace(名字空間)加入
8、這個(gè)關(guān)鍵字是為了避免在大程序中符號(hào)名重