网站建设是属于软件吗,电话销售哪里找客户电话,佛山新网站建设价格,网站运营怎么样在C/C中#xff0c;变量、函数和后面要学到的类都是大量存在的#xff0c;这些变量、函数和类的名称将都存 在于全局作用域中#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化#xff0c; 以避免命名冲突或名字污染#xff0c;namespace关键…在C/C中变量、函数和后面要学到的类都是大量存在的这些变量、函数和类的名称将都存 在于全局作用域中可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化 以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的。
#include stdio.h
#include stdlib.hint rand 10;// C语言没办法解决类似这样的命名冲突问题所以C提出了namespace来解决
int main()
{
printf(%d\n, rand);
return 0;
}// 编译后后报错error C2365: “rand”: 重定义以前的定义是“函数”
1. 命名空间定义 定义命名空间需要使用到namespace关键字后面跟命名空间的名字然后接一对{}即可{} 中即为命名空间的成员。
// bit是命名空间的名字一般开发中是用项目名字做命名空间名。
// 我们上课用的是bit大家下去以后自己练习用自己名字缩写即可如张三zs
// 1. 正常的命名空间定义
namespace bit
{// 命名空间中可以定义变量/函数/类型int rand 10;int Add(int left, int right){return left right;}struct Node{struct Node* next;int val;};
}//2. 命名空间可以嵌套
// test.cpp
namespace N1
{int a;int b;int Add(int left, int right){return left right;}namespace N2{int c;int d;int Sub(int left, int right){return left - right;}}
}//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
// ps一个工程中的test.h和上面test.cpp中两个N1会被合并成一个
// test.h
namespace N1
{int Mul(int left, int right){return left * right;}
}
注意一个命名空间就定义了一个新的作用域命名空间中的所有内容都局限于该命名空间中。
2. 命名空间使用
namespace bit
{
// 命名空间中可以定义变量/函数/类型int a 0;int b 1;int Add(int left, int right){return left right;}struct Node{struct Node* next;int val;};
}int main()
{
// 编译报错error C2065: “a”: 未声明的标识符printf(%d\n, a);return 0;
}
命名空间的使用有三种方式
1加命名空间名称及作用域限定符
int main()
{printf(%d\n, N::a);return 0;
}
2使用using将命名空间中某个成员引入
using N::b;
int main()
{printf(%d\n, N::a);printf(%d\n, b);return 0;
}
3使用using namespace 命名空间名称引入
using namespce N;
int main()
{printf(%d\n, N::a);printf(%d\n, b);Add(10, 20);return 0;
}
命名空间 (C) | Microsoft Learnhttps://learn.microsoft.com/zh-cn/cpp/cpp/namespaces-cpp?viewmsvc-170devlangscppf1url%3FappId%3DDev16IDEF1%26l%3DZH-CN%26k%3Dk(namespace_CPP)%3Bk(namespace)%3Bk(DevLang-C%252B%252B)%3Bk(TargetOS-Windows)%26rd%3Dtrue