




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基本編程技能使用程序主函數(shù)的命令行參數(shù)多個源文件程序的編譯與鏈接編寫Make工具的腳本程序1先看一個示例:下列程序的功能是什么?//ex1.cpp@20090831#include<iostream>intmain(){ inta,b; std::cin>>a>>b; std::cout<<a+b<<std::endl; return0;}[現(xiàn)場演示]編譯、運行、總結(jié)程序命令行參數(shù)2EX1.EXE的特點:加法的兩個操作數(shù)在程序運行時輸入在被“問到”時才輸入屬于“強制交互”能否有其他的人機交互方式?程序命令行參數(shù)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命令行參數(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想一想上述三個例子中,源程序中的argc與argv分別是什么?7IDE中調(diào)試時如何輸入命令行參數(shù)?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多個源文件的編譯與鏈接函數(shù)聲明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是個什么工具?使得大型編譯工作自動化的一種工具減少編譯程序花費的時間確保使用正確的選項進行編譯確保鏈接正確的程序模塊、程序庫事實上,根據(jù)MAKE的機制,還可以簡化任務(wù)的重復(fù)執(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注釋以#開頭冒號前為“任務(wù)”名完成“任務(wù)”的步驟(過程)冒號后為“任務(wù)”的“條件”24來個復(fù)雜點的吧…#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的基本方法不怕學習技術(shù)(值得學習與掌握的技術(shù))不怕付出勞動(絕對不會降低工作效率)從一個例子入手列出源程序清單(可使用dir/b
命令)搞清楚幾個最基本的編譯器參數(shù)選項g++-o:指定生成的EXE名字g++-c:要求只編譯不鏈接課后嘗試:可用來提高效率的幾個MAKE宏$@代表目標的全名(含后綴)$*代表無后綴的目標名$<代表規(guī)則中的源程序名25運行Makefile的基本方法在源代碼所在目錄中,打開控制臺窗口,然后輸入相應(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,不能管理跨平臺源代碼只基于IDE,不能與CVS工具銜接只基于IDE,不能進行“項目自動化”UnitTestingNightlyBuild…只基
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級英語補差試卷及答案
- 五年級科學上試卷及答案
- 續(xù)簽勞動合同的年度審核要求
- 《投資者教育手冊》課件
- 《直立性蛋白尿》課件 - 深入了解蛋白尿的成因與影響
- 眼部護理的五大誤區(qū)
- 中西醫(yī)結(jié)合在胃腸疾病的應(yīng)用和評估
- 安全管理在事故調(diào)查中的作用
- 《教學案例》課件
- 學校送教上門工作總結(jié)模版
- 眼科門診病歷
- 祖暅原理的課件
- 彝文《指路經(jīng)》課件
- 《神經(jīng)系統(tǒng)的傳導(dǎo)通路》課件
- 基本農(nóng)田劃定技術(shù)規(guī)程(TDT1032-2011)
- 江蘇省醫(yī)療服務(wù)項目價格標準
- 公司報廢申請單
- 太陽能電池等效電路
- TSSITS 2002-2022 低速無人駕駛清掃車安全規(guī)范
- 籍貫對照表完整版
- 個人理財分期還款計劃管理表1
評論
0/150
提交評論