版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基本編程技能使用程序主函數的命令行參數多個源文件程序的編譯與鏈接編寫Make工具的腳本程序1先看一個示例:下列程序的功能是什么?//ex1.cpp@20090831#include<iostream>intmain(){ inta,b; std::cin>>a>>b; std::cout<<a+b<<std::endl; return0;}[現場演示]編譯、運行、總結程序命令行參數2EX1.EXE的特點:加法的兩個操作數在程序運行時輸入在被“問到”時才輸入屬于“強制交互”能否有其他的人機交互方式?程序命令行參數3main(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;}4命令行參數。通過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想一想上述三個例子中,源程序中的argc與argv分別是什么?7IDE中調試時如何輸入命令行參數?8main(intargc,char**argv)?9main(intargc,char**argv)?10多個源文件的編譯與鏈接11先來看一個示例程序源代碼行號2084!12多個源文件的編譯與鏈接EX4.cpppart1.cpppart2.cpppart3.cppEX4.EXEEX4.EXE13多個源文件的編譯與鏈接//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多個源文件的編譯與鏈接15多個源文件的編譯與鏈接16多個源文件的編譯與鏈接17多個源文件的編譯與鏈接函數聲明ex5.cpp
func.h,func.cpp ex5_main.cpp18多個源文件的編譯與鏈接//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是個什么工具?使得大型編譯工作自動化的一種工具減少編譯程序花費的時間確保使用正確的選項進行編譯確保鏈接正確的程序模塊、程序庫事實上,根據MAKE的機制,還可以簡化任務的重復執(zhí)行過程減少說明文檔的編寫工作量其它創(chuàng)新性的想法2223百聞不如一見:來個例子吧#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注釋以#開頭冒號前為“任務”名完成“任務”的步驟(過程)冒號后為“任務”的“條件”24來個復雜點的吧…#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的基本方法不怕學習技術(值得學習與掌握的技術)不怕付出勞動(絕對不會降低工作效率)從一個例子入手列出源程序清單(可使用dir/b
命令)搞清楚幾個最基本的編譯器參數選項g++-o:指定生成的EXE名字g++-c:要求只編譯不鏈接課后嘗試:可用來提高效率的幾個MAKE宏$@代表目標的全名(含后綴)$*代表無后綴的目標名$<代表規(guī)則中的源程序名25運行Makefile的基本方法在源代碼所在目錄中,打開控制臺窗口,然后輸入相應的命令(如下所示)下面命令行中的
表示輸入回車鍵方法1:make
方法2:make任務名
makecleanmaketest.exe方法3:make-fmakefile的文件名
make–fmy_mkfile方法4:make-fmakefile的文件名
任務名
make–fmy_mkfiletest.exe2627哦……就這些了?是的。這么簡單?是的。沒蒙我吧?沒有。那,我能不用它嗎~~~?!@#$%^&28為什么需要MAKE&Makefile?
通常,工程的相關配置需要存放在DSP文件中,查找與修改很麻煩在配置上容易造成意想不到的不一致(如DEBUG,RELEASE)VC++6.0ProjectSettings這些依賴于IDE的設置信息保存在DSP文件中,與源代碼是分離的!29只基于IDE,不能管理跨平臺源代碼只基于IDE,不能與CVS工具銜接只基于IDE,不能進行“項目自動化”UnitTestingNightlyBuild…只基
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024日用品衛(wèi)生紙出口貿易與清關代理合同3篇
- 2024版凱悅酒店消防工程合同
- 2024年道路橋梁施工合同范本3篇
- 2024年高端數控機床生產銷售合同
- 專業(yè)人力資源三方分配合作合同(2024版)版B版
- 2024年派遣工作詳細勞動協議樣式版B版
- 專業(yè)廣告設計服務協議(2024年度)一
- 2024年自卸車建筑材料運輸合同
- 2024年精密零件加工合作協議
- 專業(yè)化內墻裝修項目協議書2024版版B版
- 新人教版小學五年級數學上冊知識點歸納總結
- 四年級上冊口算、豎式計算、脫式計算
- 腎內科降低透析器凝血發(fā)生率品管圈PDCA成果匯報
- 回族做禮拜的念詞集合6篇
- 臺區(qū)線損綜合分析臺區(qū)線損分類及計算方法
- 辯論賽醫(yī)術更重要
- 保密組織機構及人員職責
- 競爭性磋商評分細則
- 警用無人機考試題庫(全真題庫)
- 中國傳統(tǒng)節(jié)日(作文指導)課件
- 初中化學寒假作業(yè)
評論
0/150
提交評論