windos命令行下的程序编写。

1.命令行下写程序。


写程序一定要用IDE?
不,我还可以用记事本呢。
呵呵,写程序一定要用记事本??

————————————————

命令行下输入copy con test.txt后回车可在相应目录下创建test.txt文件。
然后你就可以在终端上写了。。。
写完后按下ctrl + z键,回车,输入结束,文件保存。
当然,你也可以copy con test.cpp写程序。

————————————————

2.
VS之命令行下完成编译
如果你安装有VS,可以启动vs开发人员命令提示,跳到源文件所在目录后,输入cl xx.c即可完成对其的编译。

 

在cmd窗口中执行程序,不用在末尾附加诸如system("Pause")或getchar()之类的东西,窗口不会一闪即逝,那是在IDE下调试程序时用的(其实绝大多数时候都不需要,因为一般程序总有一个循环等待用户交互再结束的)。

windos命令行下的程序编写。_第1张图片

 

————————————————————————————————————————————————————————

其实所谓的命令行环境,不过是普通的cmd窗口,它只是设置了如下所示的搜索环境(environment):

ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\TonyD_000\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=HASEE
ComSpec=C:\WINDOWS\system32\cmd.exe
DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\
ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs
FP_NO_HOST_CHECK=NO
Framework35Version=v3.5
FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework\
FrameworkDIR32=C:\WINDOWS\Microsoft.NET\Framework\
FrameworkVersion=v4.0.30319
FrameworkVersion32=v4.0.30319
FSHARPINSTALLDIR=C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\
HOMEDRIVE=C:
HOMEPATH=\Users\TonyD_000
INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Windows Kits\8.0\include\shared;C:\Program Files (x86)\Windows Kits\8.0\include\um;C:\Program Files (x86)\Windows Kits\8.0\include\winrt;
LIB=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86;
LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319;C:\WINDOWS\Microsoft.NET\Framework\v3.5;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Neutral;C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\Microsoft.VCLibs\11.0\References\CommonConfiguration\neutral;
LOCALAPPDATA=C:\Users\TonyD_000\AppData\Local
LOGONSERVER=\\MicrosoftAccount
NUMBER_OF_PROCESSORS=4
OS=Windows_NT
Path=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VSTSDB\Deploy;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools;C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319;C:\WINDOWS\Microsoft.NET\Framework\v3.5;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\VCPackages;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Team Tools\Performance Tools;C:\Program Files (x86)\Windows Kits\8.0\bin\x86;C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=2a07
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\Users\TONYD_~1\AppData\Local\Temp
TMP=C:\Users\TONYD_~1\AppData\Local\Temp
USERDOMAIN=HASEE
USERDOMAIN_ROAMINGPROFILE=HASEE
USERNAME=TonyD_000
USERPROFILE=C:\Users\TonyD_000
VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\
VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\
VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 11.0\
windir=C:\WINDOWS
WindowsSdkDir=C:\Program Files (x86)\Windows Kits\8.0\
WindowsSdkDir_35=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\
WindowsSdkDir_old=C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\

 这个环境不单是编译C/C++程序的,也可以编译C#和VB.NET、ASP.NET程序的。

 

请留意上图,在键入cl启动编译程序编译时,又自动启动了Linker链接程序,即C/C++程序的编译是要经过两个阶段的,第一是编译,把文本型的源代码编译为目标代码.obj文件,第二调用链接器把所有.obj和.lib拼合为可执行文件.exe。当我们编写多模块文件程序时,将有多个.cpp源代码,编译器是逐一把这些.cpp编译为对应的.obj,然后再用Linker把这些.obj和需要用到的.lib库拼合。所以,“编译器”实际上仅是编译,缺了链接,程序是无法执行的(通常报告某某库函数没找到、某某变量却定义之类,就是链接阶段的错误)。

程序编译并链接成功后,是脱离IDE和开发环境独立运行的,不需再附带vs,一般把编译得到的.exe文件复制出去即可(前提是运行的机器有对应版本的C/C++运行时库DLL)。

常见有人说vs只是IDE什么之类,其实是他们不知道本来有命令行开发环境可用,须知vc是从DOS时代的msc一直发展下来的延续版本的编译器,cl.exe本身就是在命令行使用的,cl Ver6.0、Ver7.0就是和TC/BC齐名于一时的编译器,vs2012是cl Ver17.0,而TC/BC则已经停止发展了,只是一般人少用而已。TC/BC声名大噪,是因为它抛出了IDE,而MSC的编译质量虽然比TC/BC优越但没有IDE,所以那个时候很多人都选择了TC/BC,这也是现在学校仍然推荐和教学TC/BC的原因,因为那些老古董教授就是这样过来的。MSC在Windows大发之后才搞的IDE,那就是原始的VS,最著名的是Ver6.0套装,才彻底击败TC/BC的IDE。

关于HelloWorld程序一点有趣的比较:用printf()写的,其.exe尺寸是56K,改用如下的putchar()版本,则是53K,源代码长了,但机器码却短了,这个尺寸的差异3K,就是printf()函数的规模,编译出来的机器码都占3K,可想而知其源代码有多庞大!

所有IDE,都是调用命令行下的编译程序,使用msc内核的是cl,使用gcc内核的是gcc。IDE只是把编译程序的输出信息输出到IDE窗口中,并没有改变编译的过程。不要把IDE和编译环境混为一谈,Code::Blocks不是编译器,而是一个内嵌某种编译器的IDE,它只是一个综合性的文字编辑器而已。同样,vs的IDE也是一个综合编辑器。

vs是一个“工作室”,Studio就是工作室的意思,所谓工作室,是包含工作所需的一切设施的。当然,有人只想要一张桌面,不要书柜,那确实可以不用工作室,摆地摊就可以了。

windos命令行下的程序编写。_第2张图片

你可能感兴趣的:(windos命令行下的程序编写。)