W01-1-命令行与多文件-525207871_第1页
W01-1-命令行与多文件-525207871_第2页
W01-1-命令行与多文件-525207871_第3页
W01-1-命令行与多文件-525207871_第4页
W01-1-命令行与多文件-525207871_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基本编程技能使用程序主函数的命令行参数多个源文件程序的编译与链接编写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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论