/*
*程序名称:CppFile
*程序描述:C++程序文件
*编写时间:20121218
*/
#include <iostream>
#include <string>
//关闭诊断机制,必需放在#include <cassert>之前才有效
#define NDEBUG
//引入诊断机制cassert
#include <cassert>
using namespace std;
/*
*C++程序包含两大类文件:头文件和源文件
*1.头文件:一般以.h文件扩展名来标识。这些文件包含类型定义和其它用于程序中一个或者多个源文件的代码 。
*2.源文件:基扩展名通常是cpp,也可以是.c、.cxx或其它扩展名。 这种文件包含要编译成机器指令的代码(主
* 要是函数定义) ,需要的头文件通过#include指令添加到源文件中。
*
*C++命名空间:程序中的一个区域
*1.标准库是在命名空间std中定义的。
*2.在没有定义命名空间进默认使用全部命名空间
*3.可以定义两相同的命名空间,而第二个是第一个扩展
*4.使用using声明
*5.如果要把函数放入命名空间中,只要把函数的原型放入该命名空间即可。
*6.可以使用嵌套的命名空间
*
*C++预处理器:是编译器把C++代码编译成机器指令之前执行的一个过程,预处理器的任务是根据包含的源文件指令,
* 使源代码正确进入编译阶段。
*1.所有预处理器指令都心符号#开头。
*2.常用预处理指令:#include、#if、#else、#elif、#endif、#ifdef、#define、##undef、#line、#error
*3.放在多行代码中的预处理器指令在每行的末尾要使用续行符\,但最后一行不使用
*4.标准预处理指令宏:__LINE__、__FILE__、__DATE__、__TIME__、__STDC__、__cplusplus__
*5.assert宏:诊断工具,在库头文件<cassert> 中声明,可以在程序中测试逻辑表达式,如果指定的逻辑表达式是
* false,assert()就会 终止程序,并显示诊断信息
*6.关闭诊断机制可以使用#define NDEBUG,必需放在#include <cassert>之前才有效
*/
#define STR "这个是宏定义!"
#define PRINTSTR(arg) cout << #arg
//名称的作用域
//定义为全局作用域的变量也可以被同名的局部变量隐藏
int test1(){
int it = 7;
cout << it; //7
cout << "\n";
{
//内部作用域将外面同名的变量隐藏
int it = 5;
cout << it; //5
}
}
int main(){
test1();
cout << "\n";
cout << STR;
cout << "\n";
PRINTSTR(这个是转换!);
cout << "\n";
//诊断机制assert的使用
assert(2<1);
}