您的位置
主页 > 国内新闻 » 正文

【C++】关于C++中使用namespace的解释以及cstdio和stdio.h的区别

来源:www.tuxbandhk.com 点击:1949

引言

你有没有想过我们在C语言中经常使用这样一个句子,但是具体的意思是什么?

你有没有想过为什么printf()函数在C语言和C语言中被使用?

命名空间的解释

如何使用命名空间

在C语言中所谓的命名空间(命名空间)的使用指定了C语言程序中标识符的可见范围。标准库中的所有标识符都是在一个名为std的命名空间中定义的。

所以当使用C标准库的任何标识符(例如cout、endl等)时。),有三种方法来声明标识符的命名空间。

1。直接指定标识符的命名空间。例如:是属于带有cout符号的std的命名空间。

示例:

2。使用using关键字为程序中的所有标识符指定命名空间。例如:通过这种方式,您可以直接使用cout,而无需在每个cout前添加它们。

示例:

3,最方便或最直接的用法,这意味着整个程序使用名为std的命名空间。这样,命名空间std中定义的所有标准库中的标识符都是有效的,并且所有标准库中的标识符不需要以“std:”开头。

示例:

为什么引入名字空间机制?

因为标准库非常大,程序员在选择类或函数的名称时,可能会使用与标准库中相同的名称。因此,为了避免这种情况导致的名称冲突,标准库中的所有内容都被放入名称空间std中。

但这将带来一个新问题。无数的原始C代码依赖于已经使用多年的伪标准库中的函数。它们都在全球空间。因此,有头文件,如和等。前者(头文件用。h)是为了与以前的C代码兼容,其中标识符存在于全局空间中,而后者(头文件没有。h)表示支持新标准,其中标识符存在于名为std的命名空间中。

所以命名空间std封装了标准程序库的名称(命名空间是std)。为了将标准程序库与以前的头文件区分开来,标准程序库通常不添加“.”h’。

事实上,你可以看到iostream.h和iostream是你的编译器包含文件夹中的两个文件。打开文件,你会发现里面的代码是不同的。带后缀的头文件。在最新的c标准中,h已经被明确提出并且不被支持。早期的实现在全局空间中定义了标准库函数,并在带有后缀的头文件中声明了该函数。h,c标准规定头文件不使用后缀。以便将其与c区域区分开,并正确使用命名空间。

因为C和早期C仍然使用默认的全局空间,早期C仍然使用。h头文件。在过渡阶段版本C中,可以看到两者的共存。在新版本的C编译器中,iostream.h头文件已被丢弃并从编译器中删除。

因此,当您使用它时,它相当于使用全局命名空间在C语言中调用库函数,这是早期的C语言实现。使用时,头文件未定义为全局命名空间,程序的默认命名空间是全局空间,因此必须使用它才能正确使用cout。

解释stdio.h和cstdio

我们习惯于使用C语言和c.

事实上,情况就是这样,因为stdio.h是早期C语言的头文件,C与C的语法兼容,而且大多数人总是会忘记C语言中的一些标识符,比如printf()函数, 在从C语言转换到C语言之后,为了在C语言中使用C语言标识符的同时对命名空间进行标准化(因为标准的命名空间是全局空间,而C语言的标准库的命名空间是标准的),他们重写了C语言标识符,并将重写后的标识符放入标准的命名空间中,于是C dio诞生了。

根据C语言中的语法,头文件的后缀。h已经被丢弃,所以现在我们可以直接在c中使用它。从c语言的头文件中删除h,并在它前面添加一个字母c。例如,string.h现在是cstring。在前面加上一个字母C表示这个头文件是通过重写C语言头文件获得的。

日本三级,香港三级,三级片网站,成人网,成人电影