15

我知道 include 用于类,而 using 用于一些内置的东西,比如命名空间 std... 当你包含一些东西时,你可以创建对象并使用它们,但是当你“使用”一些东西时,你可以使用某种内置函数。但是,我应该如何创建自己可以“使用”的“库”?

4

3 回答 3

13

简单地说#include就是告诉预编译器简单地将包含的头文件的内容复制并粘贴到当前翻译单元中。它由预编译器评估。

Whileusing directive指示编译器将符号名称从另一个作用域带入当前作用域。这基本上是由编译器实现的。

但是,我应该如何创建自己可以“使用”的“库”?

命名空间是用于防止符号名称冲突的东西。通常每个库实现者都会将他们的功能封装在一个或多个命名空间中。

于 2013-03-20T15:31:34.507 回答
4

“包含”基本上是将文件的值复制粘贴到“包含”行的位置。这用于使您的源代码(通常是 .c 文件)了解其他源代码的声明(通常位于 .h 文件中)。

'using' 基本上告诉编译器在下一个代码中你正在使用一些东西(通常是命名空间),所以你不必每次都明确地这样做:

代替:

std::string a;
std::string b;
std::string c;

你可以写:

using namespace std;
string a;
string b;
string c;
于 2013-03-20T15:33:39.600 回答
1

您可以说两者都提供相同的功能,但 #include 不是由编译器完成的,而 using 是由编译器完成的。在#include 中,所有代码都放在文件中,其中给出了#include,其中命名空间给出了从一个范围到另一个范围的函数和变量的定义。如果你在两个头文件中有同名的函数并且都包含了,那么会出现重新声明的错误,但是如果它们来自不同的命名空间,你可以使用同名的函数。

于 2018-09-18T09:38:34.397 回答