在c ++中使用和包含有什么区别?

use*_*383 7 c++

我知道include用于类和使用是为了一些内置的东西,比如命名空间std ......当你包含一些东西时,你可以创建对象并玩它们,但是当你"使用"某些东西时,你就可以使用某种内置函数.但那么我应该如何创建自己的"库",我可以"使用"?

Roe*_*rel 7

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

“using”基本上告诉编译器,在下一个代码中您正在使用某些东西(通常是命名空间),因此您不必每次都显式地执行此操作:

代替:

std::string a;
std::string b;
std::string c;
Run Code Online (Sandbox Code Playgroud)

你可以写:

using namespace std;
string a;
string b;
string c;
Run Code Online (Sandbox Code Playgroud)

  • @user2030383:`::`是范围解析运算符,它告诉编译器可以在哪个范围(*命名空间/类/结构/联合*)中找到特定符号。有很多符号是“std”命名空间的一部分,“std”代表*标准*库命名空间,您需要查看文档才能准确了解其中定义了哪些所有符号。您不应该将类放在“std”命名空间中,如果这样做,这是未定义的行为。相反,您应该将类​​包装在您自己的命名空间中。 (5认同)
  • 你可以,但你不应该。`using namespace std;` 完全违背了命名空间的目的。它常常会导致看似神秘的问题。`std` 的存在是有原因的。用它。 (2认同)

Alo*_*ave 5

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

同时using directive指示编译器将来自另一个范围的符号名称带入当前范围.这基本上是由编译器实现的.

但那么我应该如何创建自己的"库",我可以"使用"?

命名空间是用于防止符号名称冲突的东西.通常,每个库实现者都将其功能包含在一个或多个名称空间中.