2012年5月28日星期一

从C++开始

前言:
一、程序创建
1.使用文本编译器编写程序,这个文件是程序的源代码;
2.编译源代码,就是运行程序,将源代码翻译为机器使用的内部语言;包含翻译后的程序文件就是程序的目标代码(object code)
3.目标代码与其他代码链接起来,例如:c++使用的库;
                        源代码 - 编译器 - 目标代码 - 连接程序包括启动代码、库代码 - 可执行代码;
二、创建源代码:
integrated development environments、 IDE 集成开发环境可以在主程序中管理程序开发的所有步骤;
源代码文件命名后缀,为了让编译器知道是C++源代码格式:  “spiffy.cpp”;
Microsoft Visual C++ 扩展名: “cpp、cxx、cc ”;
UNIX扩展名:“C、cc、cxx、c ”;
现有集成开发环境基本实现扩展名为:“cpp ”;

三、编译连接:
cfront(c front end  叫C前段)  是c++的代码翻译为c 代码的编译/翻译器程序,起初由Stroustrup创建;

UNIX 编译:大写CC启动命令行编译器,例如源代码文件是 spiffy.C ,在UNIX提示符输入这样一条命令:CC spiffy.C 、如果没有报错将会出现尾缀是小写“o”的目标代码文件,也就是“spiffy.o ”本文件将会和库代码结合起来,生成一个可执行文件。默认情况是“a.out ”,如果只使用一个源文件,连接程序还将删除“spiffy.o”不再需要他。只要输入“a.out ”就可以执行了。Windows编译:gpp 编译器,打开MS-DOS窗口。例如源代码great.cpp,提示符输入:gpp great.cpp,编译成功会获得一个great.exe 文件。
Windows编译是在集成开发环境IDE中,Visual C++,win32 Console Application;Visual Studio.NET,是EmptyProject选项 I Application Settings;

创建好工程后,需要对程序进行编译连接。IDE通常提供了多个菜单项如:
  • Compile编译:通常意味着对当前打开的文件中的代码进行编译;
  • Build、Make建立:意味着编译工程中所有的源代码文件的代码。通常是个递增过程,也就是说如果包含3个文件,而只有其中一个文件被修改,则只重新编译该文件;
  • BuildAll意味着重新编译所有的源代码;
  • Link意味着将编译后的源代码与所需要的代码库组合;
  • Run、Execute意味运行程序,通常没有执行前面的步骤,Run将在运行程序前完成上面步骤;
错误提示:应该改正第一行错误,如果报错行找不到错误,就要向前找到错误。通过某个编译器的编译并不意味着她是合法的C++,反之也一样。

Comeau编译器最为严格,准确地遵循了C++标准;
IDE允许在辅助窗口运行程序,完毕后会自行关闭。很难看到程序输出,为了查看输出必须在程序代码加上:
cin.get(); //add this statement
cin.get();//and maybe this, too
return 0;
}
cin.get 语句读取下一次键击,因此上述语句让程序等待,直到按下Enter键,其它键位不成立。
Borland C++ Builder编译器主要是Windows编程,选择File-New 、然后选择Console App,这样将打开一个包括main()框架版本窗口,可以删除其中些项目,但保留标准代码:
#include<vcl\condefs.h>
#pragma hdrstop
而在C++BuilderX中,选择File/New/New Console 后,窗口没有main()的框架版本。仍需要选择菜单File/New File,在工程添加一个“新的.cpp”文件。

开始C++

一、C++ 显示消息的简单程序

//my first .cpp--displays a message   

#include <iostream>
int main()
using namespace std;
<<"Come up and C++ me some time.";cout<< endl;
cout<<"You won! regret it!"<<endl;                
return 0;                                                               //terminate main()
}                                                                                    //end of function body



        main()函数:int main()
{
statements
return 0;
}



以上几行代码描述了该函数的行为,函数定义 function definition,第一行是 int main() 函数头 function heading;
花括号{}包括部分叫函数体function body;函数头对函数与程序其它部分之间的接口进行了总结;函数体他应该做什么指令。每条完整的指令称为语句statement,并以分号;结束不能省略。最后一条 return statement 返回语句,结束了本函数。机器要知道语句何时结束,下一条何时开始。分隔符多种多样,c和c++一样都是使用分号。
c++ 语法中 main() 定义以函数头 int main() 开始。通常函数头可以被其它函数激活调用,函数头就是条用它的函数间的接口,位于函数名前的部分 int 为返回类型function return type 返回一个调用它的函数的信息。函数名后的括号()部分是型参列表 argument list /parameter list,他们描述的是从调用函数传递给被调用函数的函数信息。通常main() 是被编译器调用的,main()是程序与操作系统的桥梁,就是和操作系统之间的接口。C++程序必须包含一个main()函数,例外windows编程中的DLL动态链接库文件不是独立程序不需要本函数。

c++ 的注释和c的注释在 c99标准中通用,区别是/* 注释内容*/可以跨行,而// 只能到行末尾结束。

c++预处理器和iostream文件
#include<iostream> //  a preprocessor directive 预处理命令
using namespace std;
为何预处理?主文件在被编译之前对源文件进行处理,cfront翻译器也算是预处理,但这里是讲以#开头的编译指令的预处理器。是指程序与外部之间的通信,io 是指输入/输出,c++涉及到了iostream文件中的多个定义,为了cout来显示信息就需要这些定义#include编译指令导致iostream文件的内容随源代码文件的内容一起呗发送给编译器。实际上,iostream文件的内容将取代程序中的代码行#include <iostream>。但是原始文件没有被改动,而是将源代码文件盒iostream文件组合成了一复合文件,编译的下一个阶段会使用到该文件。
cin、cout进行输入输出的程序必须包含iostream文件(iostream.h)

头文件名
如同iostream一样,都被命名为include file,是被包含在其它文件中的,也叫header file。是被包含在文件的起始处。c++包含了很多的头文件,每个都支持一组特殊工具,c的头文件有扩展名.h ,将其作为一种标识方式。

命名空间
如果iostream不使用扩展名.h ,就必须使用下面的名称空间using namespace.std;编译指令来使iostream中的定义对程序可用。名称是using编译指令。是一个c++中较新的特性,是为了使编写将多个厂商已有的代码组合起来的程序更简单而设计的指令。就是碰到不同厂商使用相同的函数间的名称区别指令,不同的产品封装在不同的名称空间中。例如 三星+函数a与摩托罗拉+函数a间的区别。这种方式的好处就是讲类、函数、变量等这些c++中的标准组件都可以放置在名称空间std中。例子中的 cout变量、cin变量、endl 都是 std::cout、std::cin、std::endl,所以c++声明using 编译指令使得std名称空间中的名词都可用。标准格式是:using std::cout 而不需要提前声明 using namespace std。

使用cout 输出
cout <<"Come on and C++ me some time."; 双引号中部分是要打印的内容,也是字符串。<< 符号表示本语句将字符串内容发送给cout,本符号指出了信息流动的路径,cout是什么? 是预定义对象,知道如何显示字符串、数字、单字符等

没有评论:

发表评论