1.1.1 编译、运行程序【C++ Primer中文版(第5版)】
2013-12-05 23:13
369 查看
编写好程序后,我们就需要编译它。如何编译程序依赖于你使用的操作系统和编译器。你所使用的特定编译器的相关使用细节,请查阅参考手册或询问经验丰富的同事。
很多PC机上的编译器都具备集成开发环境(Integrated Developed Environment,IDE),将编译器与其他程序创建和分析工具包装在一起。在开发大型程序时,这类集成环境可能是非常有用的工具,但需要一些时间来学习如何高效地使用它们。学习如何使用这类开发环境已经超出了本书的范围。
大部分编译器,包括集成IDE的编译器,都会提供一个命令行界面。除非你已经了解IDE,否则你会觉得借助命令行界面开始学习C++还是很容易的。这样学习方式的好处是,可以先将精力集中于C++语言本身(而不是一些开发工具),而且,一旦你掌握了语言,IDE通常是很容易学习的。
程序源文件命名约定
无论你使用命令行界面或者IDE,大多数编译器都要求程序源码存储在一个或多个文件中。程序文件通常被称为源文件(source file)。在大多数系统中,源文件的名字以一个后缀为结尾,后缀是由一个句点后接一个或多个字符组成的。后缀告诉系统这个文件是一个C++程序。不同编译器使用不同的后缀命名约定,最常见的包括.cc、.cxx、.cpp、.cp及.C。
从命令行运行编译器
如果我们正在使用命令行界面,那么通常是在一个控制台窗口内(例如UNIX系统中的外壳程序窗口或者Windows系统中的命令提示符窗口)编译程序。假定我们的main程序保存在文件prog1.cc中,可以用如下命令来编译它
其中,CC是编译器程序的名字,$是系统提示符。编译器生成一个可执行文件。Windows系统会将这个可执行文件命名为prog1.exe。UNIX系统中的编译器通常将可执行文件命名为a.out。
为了在Windows系统中运行一个可执行文件,我们需要提供可执行文件的文件名,可以忽略其扩展名.exe:
在一些系统中,即使文件就在当前目录或文件夹中。你也必须显式指出文件的位置。在此情况下,我们可以键入
"."后跟一个反斜线指出该文件在当前目录中。
为了在UNIX系统中运行一个可执行文件,我们需要使用全文件名,包括文件扩展名:
如果需要指定文件位置,需要用一个"."后跟一个斜线来指出可执行文件位于当前目录中。
访问main的返回值的方法依赖于系统。在UNIX和Windows系统中,执行完一个程序后,都可以通过echo命令获得其返回值。
在UNIX系统中,通过如下命令获得状态
在Windows系统中查看状态可键入
运行GNU或微软编译器
在不同操作和编译器系统中,运行C++编译器的命令也各不相同。最常用的编译器是GNU编译器和微软Visual Studio编译器。默认情况下,运行GNU编译器的命令是g++:
此处,$是系统提示符。-o prog1是编译器参数,指定了可执行文件的文件名。在不同的操作系统中,此命令生成一个名为prog1或prog1.exe的可执行文件。在UNIX系统中,可执行文件没有后缀;在Windows系统中,后缀为.exe。如果省略了-o prog1参数,在UNIX系统中编译器会生成一个名为a.out的可执行文件,在Windows系统中则会生成一个名为a.exe的可执行文件(注意:根据使用的GNU编译器的版本,你可能需要指定-std=c++0x参数来打开对C++11的支持)。
运行微软Visual Studio 2010编译器的命令为cl:
此处,C:\Users\me\Programs>是系统提示符,\Users\me\Programs是当前目录名(即当前文件夹)。命令cl调用编译器,/EHsc是编译器选项,用来打开标准异常处理。微软编译器会自动生成一个可执行文件,其名字与第一个源文件名对应。可执行文件的文件名与源文件名相同,后缀为.exe。在此例中,可执行文件的文件名为prog1.exe。
编译器通常都包含一些选项,能对有问题的程序结构发出警告。打开这些选项通常是一个好习惯。我们习惯在GNU编译器中使用-Wall选项,在微软编译器中则使用/W4。
更详细的信息请查阅你使用的编译器的参考手册。
1.1节练习
练习1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行第2页的main程序。
练习1.2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。
若有需要,欢迎来我店里看看哦~~M2魅力女装
:话费充值
很多PC机上的编译器都具备集成开发环境(Integrated Developed Environment,IDE),将编译器与其他程序创建和分析工具包装在一起。在开发大型程序时,这类集成环境可能是非常有用的工具,但需要一些时间来学习如何高效地使用它们。学习如何使用这类开发环境已经超出了本书的范围。
大部分编译器,包括集成IDE的编译器,都会提供一个命令行界面。除非你已经了解IDE,否则你会觉得借助命令行界面开始学习C++还是很容易的。这样学习方式的好处是,可以先将精力集中于C++语言本身(而不是一些开发工具),而且,一旦你掌握了语言,IDE通常是很容易学习的。
程序源文件命名约定
无论你使用命令行界面或者IDE,大多数编译器都要求程序源码存储在一个或多个文件中。程序文件通常被称为源文件(source file)。在大多数系统中,源文件的名字以一个后缀为结尾,后缀是由一个句点后接一个或多个字符组成的。后缀告诉系统这个文件是一个C++程序。不同编译器使用不同的后缀命名约定,最常见的包括.cc、.cxx、.cpp、.cp及.C。
从命令行运行编译器
如果我们正在使用命令行界面,那么通常是在一个控制台窗口内(例如UNIX系统中的外壳程序窗口或者Windows系统中的命令提示符窗口)编译程序。假定我们的main程序保存在文件prog1.cc中,可以用如下命令来编译它
$ CC prog1.cc
其中,CC是编译器程序的名字,$是系统提示符。编译器生成一个可执行文件。Windows系统会将这个可执行文件命名为prog1.exe。UNIX系统中的编译器通常将可执行文件命名为a.out。
为了在Windows系统中运行一个可执行文件,我们需要提供可执行文件的文件名,可以忽略其扩展名.exe:
$ prog1
在一些系统中,即使文件就在当前目录或文件夹中。你也必须显式指出文件的位置。在此情况下,我们可以键入
$ .\prog1
"."后跟一个反斜线指出该文件在当前目录中。
为了在UNIX系统中运行一个可执行文件,我们需要使用全文件名,包括文件扩展名:
$ a.out
如果需要指定文件位置,需要用一个"."后跟一个斜线来指出可执行文件位于当前目录中。
$ ./a.out
访问main的返回值的方法依赖于系统。在UNIX和Windows系统中,执行完一个程序后,都可以通过echo命令获得其返回值。
在UNIX系统中,通过如下命令获得状态
$ echo $?
在Windows系统中查看状态可键入
$ echo %ERRORLEVEL%
运行GNU或微软编译器
在不同操作和编译器系统中,运行C++编译器的命令也各不相同。最常用的编译器是GNU编译器和微软Visual Studio编译器。默认情况下,运行GNU编译器的命令是g++:
$ g++ -o prog1 prog1.cc
此处,$是系统提示符。-o prog1是编译器参数,指定了可执行文件的文件名。在不同的操作系统中,此命令生成一个名为prog1或prog1.exe的可执行文件。在UNIX系统中,可执行文件没有后缀;在Windows系统中,后缀为.exe。如果省略了-o prog1参数,在UNIX系统中编译器会生成一个名为a.out的可执行文件,在Windows系统中则会生成一个名为a.exe的可执行文件(注意:根据使用的GNU编译器的版本,你可能需要指定-std=c++0x参数来打开对C++11的支持)。
运行微软Visual Studio 2010编译器的命令为cl:
C:\Users\me\Programs> cl /EHsc prog1.cpp
此处,C:\Users\me\Programs>是系统提示符,\Users\me\Programs是当前目录名(即当前文件夹)。命令cl调用编译器,/EHsc是编译器选项,用来打开标准异常处理。微软编译器会自动生成一个可执行文件,其名字与第一个源文件名对应。可执行文件的文件名与源文件名相同,后缀为.exe。在此例中,可执行文件的文件名为prog1.exe。
编译器通常都包含一些选项,能对有问题的程序结构发出警告。打开这些选项通常是一个好习惯。我们习惯在GNU编译器中使用-Wall选项,在微软编译器中则使用/W4。
更详细的信息请查阅你使用的编译器的参考手册。
1.1节练习
练习1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行第2页的main程序。
练习1.2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。
若有需要,欢迎来我店里看看哦~~M2魅力女装
:话费充值
相关文章推荐
- C++ Primer 5th - 1.1.1 编译并且运行我们的程序
- 1.4.Qt通过命令行编译运行程序注意事项
- 生成在嵌入式设备上运行的程序需要进行交叉编译
- .NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序
- 使用Editplus编译运行Java程序
- C语言里程序编译无误但运行会弹出程序已停止运行是为什么?
- C/C++程序编译运行过程分析(转载)
- Java程序编译和运行的过程
- 《Erlang程序设计》学习笔记-第6章 编译并运行程序
- 1.1 编写一个简单的C++程序【C++ Primer中文版(第5版)】
- VS2008 Debug模式下编译完程序运行时提示"没有找到MSVCR90D.dll..."的解决办法
- Linux下如何编译并运行C程序
- 为什么在Win7上编译的ADO程序不能在XP上运行
- Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- 如何使编译的EXE程序能多个运行?
- 在gem5的full system下运行 alpha编译的测试程序 running gem5 on ubuntu in full system mode in alpha
- MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误
- Windows下使用eclipse编译打包运行自己的MapReduce程序 Hadoop2.6.0
- VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”
- VS2008编译的mfc程序在没有安装的机子上运行的问题