首页 > 个性签名 正文
【空间名】c名称空间(名称空间)详细信息

时间:2023-02-13 05:33:50 阅读: 评论: 作者:佚名

大中型软件经常由多个程序员共同开发,使用很多变量和函数,变量或函数的命名冲突不可避免地发生。如果所有人的代码都通过了测试,那么在没有问题的情况下组合它们可能会导致命名冲突。

例如,小李和小韩都参与了文件管理系统的开发,该系统定义了表示当前打开的文件的全局变量FP,如果将代码编译在一起,编译器将询问FP重复定义(Redefinition)错误。

为了解决共同开发中的名称冲突问题,C引入了命名空间(Namespace)概念。请看下面的例子。

1.namespace Li{ //定义小李的变量

2.文件FP=空;

3.}

4.namespace Han{ //定义小韩的变量

5.文件FP=空

6.}

小李和小韩分别定义了以自己姓氏为名的命名空间,这时一起编译他们的FP变量就没有问题了。命名空间也称为命名空间、命名空间。

Namespace是c的关键字,以下列语法格式定义命名空间:

Namespace name{

//variables、functions、classes

}

Name是可以包含变量、函数、类、typedef、#define等的命名空间的名称,最后用{}括起来。变量,表示使用函数时变量所在的命名空间。以上述FP变量为例,可以按如下方式使用:

1.Li :3360 FP=fopen ('one.txt '' R ');//使用小李定义的变量FP

2.Han :3360 FP=fopen('' Rb ');//使用小韩定义变量FP

:3360是一个称为域解析运算符的新符号,用于表示c要使用的命名空间。

除了直接使用域确认运算符外,还可以使用using关键字声明。例如:

1.using Li :3360fp

2.FP=fopen('one.txt '' r ');//使用小李定义的变量FP

3.Han :3360 FP=fopen('' Rb ');//使用小韩定义变量FP

在代码开头用using声明了li33603360fp。也就是说,如果在using声明后程序出现未指定命名空间的FP,请使用Li:fp。但是,使用小韩定的FP仍然需要Han:fp。

Using声明不仅可以用于声明命名空间中的一个变量,还可以用于声明整个命名空间。例如:

1.using namespace Li

2.FP=fopen('one.txt '' r ');//使用小李定义的变量FP

3.Han :3360 FP=fopen('' Rb ');//使用小韩定义变量FP

如果命名空间Li中还定义了其他变量,则FP变量也有效果。如果在Using声明后未专门指定命名空间的变量导致命名冲突,则默认情况下将使用命名空间Li中的变量。

除了可以在命名空间内声明或定义变量外,还可以在命名空间内声明或定义命名空间外声明或定义的其他名称,如类、函数、typedef和#define。

从编译和链接的角度来看,代码中出现的变量名、函数名、类名等都是符号(Symbol)。还有一些符号可以参考内存位置,例如变量名和函数名。某些符号只是新名称,例如typedef中定义的类型别名。

名称空间的完整示例代码如下:

1.# include

3.//在命名空间中定义类

4.namespace Diy{

5.class Student{

6.公共:

7.车* name

8.int age

9.float score

10.

11.public:

12.void say(){

13.printf('%s的年龄为%d,成绩为%f\n '名称、age、score);

14.}

15.};

16.}

17.

18.int main(){

19.Diy:Student stu1

20.='小明'

21.=15;

22.=92.5f

23.();

24.

25.返回0;

26.}

运营结果:小明的年龄为15岁,成绩为92.500000

c名称空间的语法相对复杂。本节只讨论冰山一角。有关命名空间的详细信息将在下一章详细说明。

  • 评论列表

发表评论: