1. C++程序结构
一个程序是由若干个程序源文件(source file)组成的。.cpp文件,一般由编译预处理命令、数据或数据结构定义以及若干个函数组成。代码中,main()表示主函数,无论该函数处在整个程序的什么位置,每一个程序执行时都必须从main()函数开始,且每个C++程序或者由多个源文件组成的C++项目都必须包含一个且只有一个main()函数。
Ø #include<…>指令,表示预处理指令。…表示头文件(header file),以.h作为扩展名;例如:C++的标准输入输出流对象cin/cout需要头文件iostream.h头文件的支持,可以使用如下两种方式包含在预编译指令中:
#include<iostream.h> //这个是C语言的风格,不建议采用
#include<iostream> //这个是C++语言的风格,但要使iostream对程序有效,还必须使用命名空间“using namespace std;”,且这条语句必须放在全局变量声明的位置。
Ø 程序中的注释:注释对编译和运行不起作用
/*……*/,块注释,实现多行注释
//……,行注释,实现单行注释
2. C++预处理
预处理命令包含三种:宏定义命令、文件包含命令、条件编译命令。
1) 宏定义命令:
格式为:#define 宏名 宏值 //eg:#define PI 3.141593
a) #define、PI和3.141593之间一定要有空格,末尾没有分号,且一般将宏名定义成大写
b) 宏被定义后,一般不能再重新定义,而只有当使用如下命令时才可以重新定义:
#undef 宏名
c) 一个定义过的宏名可以用来定义其他新的宏
d) 宏可以带参数,
eg:#define MAX(a,b) ((a)>(b)?(a):(b))
…
int x=MAX(3,9); //x的值是9,调用MAX宏,并按宏的定义展开
2) 文件包含命令:
指将另一个源文件的内容合并到源程序中,有以下两种格式:
#include <文件名> //用来包含那些由系统提供的并放在指定子目录中的头文件
#include “文件名” //用来包含那些由用户自定义的放在当前目录或其他目录下的头文件或其他源文件
3) 条件编译命令:
一般情况下,源程序中的所有语句都参加编译,但有时根据一定的条件去编译源文件的不同部分,这就是条件编译;条件编译使得同一源程序在不同的编译条件下得到不同的目标代码;常见的形式有:
n 格式1
#ifdef <identifier>
<程序段1>
[
#else
<程序段2>
]
#endif
tips:#ifdef、#else、#endif都是关键字,<程序段>是由若干条预处理命令或语句组成的。格式1的含义是:如果标识符已经被#define命令定义过,则编译<程序段1>,否则编译<程序段2>,其中[]中的内容是可选的。
n 格式2:
#ifndef <标识符>
<程序段1>
[
#else
<程序段2>
]
#endif
tips:同格式1的区别在于,如果标识符没有被#define命令定义过,则编译<程序段1>,否则编译<程序段2>。
n 格式3:
#if <表达式1>
<程序段1>
[
#elif <表达式2>
<程序段2>
……
]
[
#else
<程序段n>
]
#endif
tips:如果<表达式1>为真,就编译<程序段1>;否则如果<表达式2>为真,就编译<程序段2>,……;如果各个表达式都不为真,就编译<程序段n>。