




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基本編程技能使用程序主函數(shù)的命令行參數(shù)多個(gè)源文件程序的編譯與鏈接編寫Make工具的腳本程序1先看一個(gè)示例:下列程序的功能是什么?//ex1.cpp@20090831#include<iostream>intmain(){ inta,b; std::cin>>a>>b; std::cout<<a+b<<std::endl; return0;}[現(xiàn)場(chǎng)演示]編譯、運(yùn)行、總結(jié)程序命令行參數(shù)2EX1.EXE的特點(diǎn):加法的兩個(gè)操作數(shù)在程序運(yùn)行時(shí)輸入在被“問(wèn)到”時(shí)才輸入屬于“強(qiáng)制交互”能否有其他的人機(jī)交互方式?程序命令行參數(shù)3main(intargc,char**argv)?請(qǐng)看下面的例子//ex2.cpp@20090831#include<iostream> #include<cstdio> //atoi()intmain(intargc,char**argv){ inta,b;// std::cin>>a>>b; a=atoi(argv[1]); b=atoi(argv[2]); std::cout<<a+b<<std::endl; return0;}4命令行參數(shù)。通過(guò)argc,argv傳入5main(intargc,char**argv)?//ex2.cpp@20090831#include<iostream> #include<cstdio> //atoi()intmain(intargc,char**argv){ inta,b;// std::cin>>a>>b; a=atoi(argv[1]); b=atoi(argv[2]); std::cout<<a+b<<std::endl; return0;}EX2.EXE453argc“4”“5”“EX2.EXE”argvargv[0]argv[1]argv[2]char**int6例1:dir*.exe*.cpp*.obj/b例2:cl–GXex2.cpp–oABC.exe例3:g++ex01.cpplog.cpp想一想上述三個(gè)例子中,源程序中的argc與argv分別是什么?7IDE中調(diào)試時(shí)如何輸入命令行參數(shù)?8main(intargc,char**argv)?9main(intargc,char**argv)?10多個(gè)源文件的編譯與鏈接11先來(lái)看一個(gè)示例程序源代碼行號(hào)2084!12多個(gè)源文件的編譯與鏈接EX4.cpppart1.cpppart2.cpppart3.cppEX4.EXEEX4.EXE13多個(gè)源文件的編譯與鏈接//ex5.cpp@20090831#include<iostream> #include<cstdio> //atoi()intADD(inta,intb){returna+b;}intmain(intargc,char**argv){ if(argc!=3){ std::cout<<"Usage:"<<argv[0]<<"op1op2"<<std::endl; return1; } inta,b; a=atoi(argv[1]); b=atoi(argv[2]); std::cout<<ADD(a,b)<<std::endl;
return0;}14多個(gè)源文件的編譯與鏈接15多個(gè)源文件的編譯與鏈接16多個(gè)源文件的編譯與鏈接17多個(gè)源文件的編譯與鏈接函數(shù)聲明ex5.cpp
func.h,func.cpp ex5_main.cpp18多個(gè)源文件的編譯與鏈接//func.hintADD(inta,intb);//func.cpp#include"func.h"intADD(inta,intb){returna+b;}//ex5_main.cpp@20090831#include<iostream> #include<cstdio> //atoi()#include"func.h" //ADD()intmain(intargc,char**argv){ if(argc!=3){ std::cout<<"Usage:"<<argv[0] <<"op1op2"<<std::endl; return1; } inta,b; a=atoi(argv[1]); b=atoi(argv[2]); std::cout<<ADD(a,b)<<std::endl; return0;}19練一練//func.hintADD(inta,intb);//func.cpp#include"func.h"intADD(inta,intb){returna+b;}//ex5_main.cpp@20090831#include<iostream> #include<cstdio> //atoi()#include"func.h" //ADD()intmain(intargc,char**argv){ if(argc!=3){ std::cout<<"Usage:"<<argv[0] <<"op1op2"<<std::endl; return1; } inta,b; a=atoi(argv[1]); b=atoi(argv[2]); std::cout<<ADD(a,b)<<std::endl; return0;}在命令行窗口中如何編譯鏈接它們?在VC-IDE中如何編譯鏈接它們?20MAKE工具與Makefile文件21MAKE是個(gè)什么工具?使得大型編譯工作自動(dòng)化的一種工具減少編譯程序花費(fèi)的時(shí)間確保使用正確的選項(xiàng)進(jìn)行編譯確保鏈接正確的程序模塊、程序庫(kù)事實(shí)上,根據(jù)MAKE的機(jī)制,還可以簡(jiǎn)化任務(wù)的重復(fù)執(zhí)行過(guò)程減少說(shuō)明文檔的編寫工作量其它創(chuàng)新性的想法2223百聞不如一見(jiàn):來(lái)個(gè)例子吧#XuMingxing@20070525#C++CourseforTHU2006#all:main.exetest.exemain.exe:main.cppstudent.cpp
g++-omain.exemain.cppstudent.cpptest.exe:student.cppstudent_test.cpp
g++-otest.exestudent_test.cppstudent.cppclean:
del*.obj*.exe注釋以#開(kāi)頭冒號(hào)前為“任務(wù)”名完成“任務(wù)”的步驟(過(guò)程)冒號(hào)后為“任務(wù)”的“條件”24來(lái)個(gè)復(fù)雜點(diǎn)的吧…#YoucanuseNMAKE.exe(MS)orMAKE.exe(GNU)torunthisfile.#ThereisaverybigdifferencebetweenGNU-MakeandMS-NMake,ALL:SpkVRF.dllWaveTest_win32.exeLiveTest_win32.exedll_tester.exeLiveTest_win32.exe:LiveTest_win32.cppaudio_win32.cppDLLUtil.cpp cl/nologoLiveTest_win32.cppaudio_win32.cppDllUtil.cpp#onlyoff-linetest(testwavefiles)WaveTest_win32.exe:WaveTest_win32.objWFile.objCComBuf.objDLLUtil.obj link/nologo/NODEFAULTLIB:LIBC/out:WaveTest_win32.exeWaveTest_win32.objWFile.objCComBuf.objDLLUtil.objdll_tester.exe:dll_tester.objwfile.objccombuf.objdllutil.obj link/nologo/NODEFAULTLIB:LIBC/out:dll_tester.exedll_tester.objwfile.objccombuf.objdllutil.obj編寫Makefile的基本方法不怕學(xué)習(xí)技術(shù)(值得學(xué)習(xí)與掌握的技術(shù))不怕付出勞動(dòng)(絕對(duì)不會(huì)降低工作效率)從一個(gè)例子入手列出源程序清單(可使用dir/b
命令)搞清楚幾個(gè)最基本的編譯器參數(shù)選項(xiàng)g++-o:指定生成的EXE名字g++-c:要求只編譯不鏈接課后嘗試:可用來(lái)提高效率的幾個(gè)MAKE宏$@代表目標(biāo)的全名(含后綴)$*代表無(wú)后綴的目標(biāo)名$<代表規(guī)則中的源程序名25運(yùn)行Makefile的基本方法在源代碼所在目錄中,打開(kāi)控制臺(tái)窗口,然后輸入相應(yīng)的命令(如下所示)下面命令行中的
表示輸入回車鍵方法1:make
方法2:make任務(wù)名
makecleanmaketest.exe方法3:make-fmakefile的文件名
make–fmy_mkfile方法4:make-fmakefile的文件名
任務(wù)名
make–fmy_mkfiletest.exe2627哦……就這些了?是的。這么簡(jiǎn)單?是的。沒(méi)蒙我吧?沒(méi)有。那,我能不用它嗎~~~?!@#$%^&28為什么需要MAKE&Makefile?
通常,工程的相關(guān)配置需要存放在DSP文件中,查找與修改很麻煩在配置上容易造成意想不到的不一致(如DEBUG,RELEASE)VC++6.0ProjectSettings這些依賴于IDE的設(shè)置信息保存在DSP文件中,與源代碼是分離的!29只基于IDE,不能管理跨平臺(tái)源代碼只基于IDE,不能與CVS工具銜接只基于IDE,不能進(jìn)行“項(xiàng)目自動(dòng)化”UnitTestingNightlyBuild…只基
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 為什么需要火災(zāi)應(yīng)急預(yù)案(3篇)
- 高考數(shù)學(xué)技能提煉與應(yīng)用題試題及答案
- 婁星區(qū)森林火災(zāi)應(yīng)急預(yù)案(3篇)
- 火災(zāi)應(yīng)急預(yù)案演練過(guò)程(3篇)
- 食堂火災(zāi)應(yīng)急預(yù)案范本(3篇)
- 小區(qū)白天火災(zāi)應(yīng)急預(yù)案(3篇)
- 2025年軟考網(wǎng)絡(luò)管理觀念試題及答案
- 2025年信息處理行業(yè)動(dòng)態(tài)試題及答案
- 《微格教學(xué)與微格教研》課件-【第5章】 課堂教學(xué)技能分類
- 企業(yè)融資方式與戰(zhàn)略風(fēng)險(xiǎn)管控的結(jié)合試題及答案
- 建設(shè)用地報(bào)批服務(wù)投標(biāo)方案(技術(shù)方案)
- GJB438C模板-軟件開(kāi)發(fā)計(jì)劃(已按標(biāo)準(zhǔn)公文格式校準(zhǔn))
- 康復(fù)評(píng)定-常用康復(fù)評(píng)定項(xiàng)目課件
- 血友病性關(guān)節(jié)炎的治療及護(hù)理
- 肝硬化腹水臨床路徑(2019年版)
- 物業(yè)承接查驗(yàn)標(biāo)準(zhǔn)及表格
- 鋼結(jié)構(gòu)門頭專項(xiàng)施工方案
- 回彈法檢測(cè)磚砂漿強(qiáng)度計(jì)算表
- 《水的組成》說(shuō)課課件
- 2023年江蘇省揚(yáng)州市英語(yǔ)中考真題試卷(含答案)
- 城市園林綠化養(yǎng)護(hù)方案
評(píng)論
0/150
提交評(píng)論