拓展:C++程序结构
程序结构
文件包括
文件包含是指在一个C++源程序中通过#include命令将另一个文件(通常是.h、.c或.cpp为后缀的文件)的全部内容包含进来。
格式:#include <被包含文件名> 或 #include "被包含文件名"
【说明】编译时预编译器将被包含文件的内容插入到源程序中#include命令的位置,以形成新的源程序。
宏定义
宏定义又分为:不带参数的宏定义和带参数的宏定义。
#define 命令 定义一个标识符来代表一个字符串(表达式),当在源程序中发现该标识符时,都用该字符串替换,以形成新的源程序。
这种标识符称为宏名(macro name),将程序中出现的与宏名相同的标识符替换为字符串的过程称为宏替换或宏代换。
用大写字母来定义宏名。
宏替换时仅仅是将源程序中与宏名相同的标识符替换成宏的内容文本,并不对宏的内容文本做任何处理。
不带参数的宏定义
格式:#define 标识符 单词串
说明:#define是宏定义命令。 标识符(宏名)被定义用来代表后面的单词串。 单词串是宏的内容文本,也称为宏体,可以是任意以回车换行结尾的文字。 单词串一般不用分号结尾。
带参数的宏定义
格式:#define 标识符(参数列表) 单词串
说明:参数表由一个或多个参数构成,参数只有参数名,没有数据类型符,参数之间用逗号隔开,参数名必须是合法的标识符。参数列表类似函数的形参表。
预编译器首先将实参按参数列表中参数对应的顺序,取代内容文本中的参数;再将这个宏的实际内容文本替换源程序中的宏标识符。
名字空间
同一个名字在不同模块中代表不同的事物。当这些模块用到同一个程序中,同名标识符就引起冲突。C++提供名字空间(namespace) 将相同的名字放在不同空间中来防止命名冲突。
格式:namespace 名称 { 成员; }
说明:namespace 为关键字。 名称为名字空间标识符。 成员为函数、变量、常量、自定义类型等。
个别使用声明方式
格式:名字空间名:: 成员使用形式
说明: ::为作用域分辨符。 成员使用形式包括函数调用式、变量名、常量名、类型名等 。
例如:int main() { TsingHua::ShowName();//个别声明方式 return 0; }
全局声明方式
格式:using namespace名字空间名
说明:表明此后使用的名字空间为C++标准库名字空间std,此后的cout、endl均来自名字空间std。
全局声明个别成员
格式:using 名字空间名N::成员名M
说明:表明以后使用的成员M来自名字空间N。成员名M为函数、变量、常量、类型的名字。