版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基本编程技能使用程序主函数的命令行参数多个源文件程序的编译与链接编写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的机制,还可以简化任务的重复执行过程减少说明文档的编写工作量其它创新性的想法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宏$@代表目标的全名(含后缀)$*代表无后缀的目标名$<代表规则中的源程序名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. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度产品代理合同(含代理区域与销售目标)
- 2024年度版权许可使用合同履约保证金规定
- 2024年度城市道路照明设施安装合同
- 2024年度物流服务外包合同(含冷链)
- 04版城市基础设施建设项目合同
- 身份鉴别用安全编码卡项目评价分析报告
- 2024年度商业物业租赁与管理合同
- 2024年度展览展示合同
- 贴纸书市场需求与消费特点分析
- 2024年度担保合同
- 塑料制品碳足迹核算通则
- 岩土工程领域的前沿技术与未来发展
- 英语学科家长会模板
- 道德与法治一年级上册全册第四单元教学设计
- DB13(J)-T 137-2012 塑料排水检查井应用技术规程
- 中华诗词之美期末考试答案
- 大班幼儿生命教育教案反思总结(3篇模板)
- 二年级综合实践课件生活中的标志
- 2024年安全生产教育培训计划
- 光伏居间合同协议书范本
- 幼儿园家长助教课件下载两篇
评论
0/150
提交评论