版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基本編程技能使用程序主函數(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)場演示]編譯、運(yùn)行、總結(jié)程序命令行參數(shù)2EX1.EXE的特點(diǎn):加法的兩個(gè)操作數(shù)在程序運(yùn)行時(shí)輸入在被“問到”時(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ù)。通過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先來看一個(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)行編譯確保鏈接正確的程序模塊、程序庫事實(shí)上,根據(jù)MAKE的機(jī)制,還可以簡化任務(wù)的重復(fù)執(zhí)行過程減少說明文檔的編寫工作量其它創(chuàng)新性的想法2223百聞不如一見:來個(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注釋以#開頭冒號(hào)前為“任務(wù)”名完成“任務(wù)”的步驟(過程)冒號(hào)后為“任務(wù)”的“條件”24來個(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:要求只編譯不鏈接課后嘗試:可用來提高效率的幾個(gè)MAKE宏$@代表目標(biāo)的全名(含后綴)$*代表無后綴的目標(biāo)名$<代表規(guī)則中的源程序名25運(yùn)行Makefile的基本方法在源代碼所在目錄中,打開控制臺(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哦……就這些了?是的。這么簡單?是的。沒蒙我吧?沒有。那,我能不用它嗎~~~?!@#$%^&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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2010年1月9日上午北京市公務(wù)員面試真題試卷
- 殘疾兒童送教上門學(xué)期的工作總結(jié)
- 新質(zhì)生產(chǎn)力推動(dòng)數(shù)字文娛發(fā)展
- 委托制作節(jié)目光盤合同范例
- 感恩父母主題班會(huì)策劃方案
- 買賣雙方送貨合同范例
- 公司股購買合同模板
- 小孩上學(xué)勞務(wù)合同范例
- 中介合同與個(gè)人合同范例
- 新質(zhì)生產(chǎn)力推動(dòng)綠色能源發(fā)展
- 2023年中國鐵路太原局集團(tuán)有限公司校園招聘筆試題庫及答案解析
- 區(qū)域醫(yī)療中心建設(shè)方案
- 產(chǎn)品介紹VA產(chǎn)品功能介紹
- 浙江省地方執(zhí)法證考試參考題庫大全-4(案例分析題部分)
- 流程圖、結(jié)構(gòu)圖(優(yōu)秀) 兒童教育課件 精選
- 小學(xué)一年級(jí)期中考試家長會(huì)課件
- 政府安置房交房交付儀式活動(dòng)方案
- 2022年西藏開發(fā)投資集團(tuán)有限公司招聘筆試題庫及答案解析
- 抗生素使用十大誤區(qū)課件
- 初三【語文(統(tǒng)編)】《范進(jìn)中舉》中人物丑態(tài)的表現(xiàn)課件
- 2022年全國高中數(shù)學(xué)聯(lián)賽福建賽區(qū)預(yù)賽試卷參考答案
評(píng)論
0/150
提交評(píng)論