预处理指令
C++中要把.h或者.cpp文件翻译成可执行文件主要经过
预处理——编译——链接
预处理主要是检测文件的可执行性;
预处理指令以**#**开始
命名空间是C++语言的新特征
命名空间是类、函数、对象、类型等名字的声明集合
std;是C++语言的标准命名空间,包含了标准头文件中各种名字的声明;
标准头文件:iostrenm cstring iomanip
其中namespace 是C++的关键字,用于说明,命名空间。声明之后,程序可以使用iostream中的全部组件(例如cin、cout)
如果不用using声明名空间,则需要在使用时指定组件的名空间
#include<iostream>
using std::cin;
using std::cout; //指定使用std的cout元素
int main(){
int a,b;
cin>>a;
cin>>b;
cout<<"a+b"<<a+b<<'\n';
}
方发二
#include<iostream>
int main(){
int a,b;
std::cin>>a; //声明使用std中的cin
std::cin>>b;
std::cout<<"a+b"<<a+b<<'\n';
}
易错点
假如是我们自己声明的头文件//lib.h
Dream是lib中声明的一类类
#include"lib.h"
int main(){
lib::Dream;
}
这就是错误因为lib 是操作系统能识别的文件名,不是C++编译器能识别的“名字”。
所以有了namespace 和using 机制
在lib定义类时加入namespace lib;再用::即可,因为此时lib不再是头文件名而是命名空间名
使用命名空间
用using可以指定使用命名空间using两种形式
一、using namespace 名空间;
二、using 名空间::元素
#include<instream>
using namespace std;
namespace A //这里的A就相当于上文中的lib
{ void f()
{cout<<"f():from A:"<<endl;}
namespace B;
{void f()
{cout<<"f():from B"<<endl;}
}
int main(){
using namespace A; //使用名空间
f(); //调用A:f()
B::f(); //调用A;B:f()
}